Ruby on rails 4 Rails:如何使用Capistrano为初始部署设置db:schema:load
我正在尝试使用Ruby on rails 4 Rails:如何使用Capistrano为初始部署设置db:schema:load,ruby-on-rails-4,capistrano3,Ruby On Rails 4,Capistrano3,我正在尝试使用capistrano3部署我的rails4应用程序。我在运行db:migrations时收到错误消息(对不起,我一直很马虎)。有没有办法让Capistrano使用db:schema:load部署应用程序(至少是第一次) 我的deploy.rb的摘录: namespace :deploy do %w[start stop restart].each do |command| desc 'Manage Unicorn' task command do
capistrano3
部署我的rails4
应用程序。我在运行db:migrations
时收到错误消息(对不起,我一直很马虎)。有没有办法让Capistrano使用db:schema:load
部署应用程序(至少是第一次)
我的deploy.rb
的摘录:
namespace :deploy do
%w[start stop restart].each do |command|
desc 'Manage Unicorn'
task command do
on roles(:app), in: :sequence, wait: 1 do
execute "/etc/init.d/unicorn_#{fetch(:application)} #{command}"
end
end
end
我不知道如何覆盖Capistrano3的默认行为。有人能告诉我如何将它添加到我的脚本中吗?对于第一次部署,我通常通过登录服务器,
cd
进入发布目录(此时将有部署的代码)来绕过它,然后使用RAILS 5.1.6应用程序在Capistrano 3.10.1中手动运行
~/Documents/p.rails/perla-uy[staging]$ bundle exec cap staging deploy:updating
给了我足够的时间来shell并手动运行db:structure:load
或db:schema:load
任务。在主机的secure shell会话中,切换到新创建的发布目录,然后:
dclo@localhost:~/perla-uy/releases/20180412133715$ bundle install --without development test --deployment
dclo@localhost:~/perla-uy/releases/20180412133715$ bundle exec rails db:schema:load
尝试了deploy:migrate
的部署(成功或失败)并不完全相同
注意:我已经通过shell登录设置了
RAILS\u ENV=production
和RAILS\u MASTER\u KEY=…
。除非这是一个糟糕的解决方法。我们永远不需要直接用SSH连接到服务器——如果我们可以在服务器上运行命令,那么Capistrano有什么意义呢?自动化。Capistrano的目的是让您不必反复运行相同的长命令集。