Rails:如何设置 db:schema:load 以使用 Capistrano 进行初始部署

Rails: How to set up db:schema:load for initial deploy with Capistrano

我正在尝试使用 Capistrano 3 部署我的 Rails 4 应用程序。我在 运行 和 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

我不确定如何覆盖 Capistrano 3 的默认行为。谁能告诉我如何将它添加到我的脚本中?

对于第一次部署,我通常通过登录服务器,cd进入发布目录(此时将有部署的代码),然后手动 运行 RAILS_ENV=yourenv bundle exec rake db:setup.

在带有 Rails 5.1.6 应用程序的 Capistrano 3.10.1 中,

~/Documents/p.rails/perla-uy[staging]$ bundle exec cap staging deploy:updating

足以让我手动 shell 和 运行 db:structure:loaddb:schema:load 任务。在主机的安全 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_ENV=productionRAILS_MASTER_KEY=...