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的目的是让您不必反复运行相同的长命令集。