【问题标题】:Capistrano 3 - how to query DB during deployCapistrano 3 - 如何在部署期间查询数据库
【发布时间】:2015-04-18 14:17:09
【问题描述】:

我们的应用 - Rails 4.1,Passenger 4,使用 Capistrano 3.1 部署。

在处理信用卡交易时,我将其记录在我们的数据库中,然后点击 Authorize.net 以实际收取 $。成功后,我会在我们的系统中更新交易。

我想确保在等待 Authorize.net 响应时,Passenger 不会重新启动。一种选择是查询数据库以查看是否有待处理的事务并等待重新启动乘客。

如何加载 Rails Env 并从 Capistrano 任务访问模型? rake 任务很容易。 deploy.rb 中的类似内容:

task :restart do
  on roles(:app), in: :sequence, wait: 5 do
    If Donations.pending == true
        sleep 5
    else
      execute :touch, release_path.join('tmp/restart.txt')
    end
  end
end

我也愿意接受其他建议。我提前感谢您的任何建议。

【问题讨论】:

    标签: ruby-on-rails passenger capistrano3


    【解决方案1】:

    我认为您的答案实际上可能就在您的问题中:使用 rake 任务。 Capistrano 本身不在服务器上运行,并且可能无法访问正在运行的系统使用的数据库。但是在应用服务器上运行的 rake 任务应该可以访问完整的应用程序堆栈,使您能够使用应用程序的真实模型。

    看看How do I run a rake task from Capistrano?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 2015-07-22
      相关资源
      最近更新 更多