Развертывание Engineyard: как обнаружить в deployhooks, что это первая попытка выполнить 'rake db:seed'

У меня возникают проблемы с обнаружением, что это первая попытка развертывания после загрузки экземпляра сервера. Мне нужно запустить команду rake db:seed только первый раз, чтобы установить пользователей по умолчанию и другие детали в базе данных. Я понятия не имею, возможно ли это.

кто-нибудь может мне помочь, пожалуйста

2 ответа

Решение

Лучший способ узнать это, отправив --extra-deploy-hook-options во время выполнения команды развертывания и проверьте в after_migrate.rb если config[:initial] присутствует или нет. Команда будет выглядеть так

  ey deploy -e myapp_staging --config=initial:true

Хук after_migrate.rb будет выглядеть так:

on_app_servers do
  if config[:initial] == 'true'
    $stderr.puts "Seeding the data"
    run "cd #{config.release_path}"
    run "bundle exec rake db:seed"
  else
    $stderr.puts "Skipping the Seeding process"
   end
end

Для дополнительной информации ey help deploy

Есть несколько способов сделать это.

Самым простым было бы сделать это в db/seeds.rb и запросить, существуют ли уже данные, которые в противном случае были бы перезаписаны при запуске.

Если это сделано, вы можете запустить rake db:seed в развертывании крюка. Вы можете найти документацию по хукам развертывания здесь: https://support.cloud.engineyard.com/hc/en-us/articles/205407008-Use-Ruby-Deploy-Hooks

Другие вопросы по тегам