Развертывание 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