【问题标题】:Delayed Job in Rails 4 with Capistrano使用 Capistrano 在 Rails 4 中延迟作业
【发布时间】:2014-10-04 21:24:09
【问题描述】:

我不知道如何在专用 Ubuntu 服务器上启动延迟作业。

它在我的本地主机上运行良好,但是当我在我的服务器上运行时

sudo RAILS_ENV=production bin/delayed_job restart

我明白了

sudo: bin/delayed_job: command not found

最重要的是,如果我运行“rake jobs:work RAILS_ENV=production”命令,我会收到以下错误:

 PG::FeatureNotSupported: ERROR:  SELECT FOR UPDATE/SHARE is not allowed in subqueries

显然我的 psql 版本有问题。

有什么方法可以让脚本工作吗?任何有效的 Capistrano 食谱可用?我在网上找到的都是 Rails 3 和旧版本 capistrano 的旧配方。

提前致谢。

编辑:

我已经捆绑安装了守护进程 gem 并在我的本地机器上生成了“delayed_job:active_record”,然后开始部署在生产服务器中安装和迁移的捆绑包。

bin/delayed_job 文件存在于服务器中,但由于找不到命令而失败。

【问题讨论】:

  • 你确定你在你的服务器上安装了 gems 吗?捆绑安装?
  • 请确保将 gem "daemons" 添加到您的 Gemfile,然后捆绑安装。你必须运行 rails generate delayed_job:active_record && rake db:migrate。
  • @EkiEqbal 是的,我已经捆绑安装了守护进程 gem 并在我的本地机器上生成了“delayed_job:active_record”。我是否也必须在生产服务器上运行它?
  • 请在您的生产服务器上运行它,或者如果您想创建一个 Capistrano 配方以在生产服务器上自动执行该操作。
  • 让我更新,如果您的问题已解决,我可以将其发布为答案。

标签: ruby-on-rails ruby capistrano delayed-job


【解决方案1】:

你必须在目标服务器上运行这个:

bundle exec rails generate delayed_job

【讨论】:

    【解决方案2】:

    并将其添加到 config/environment.rb:

    ENV['RAILS_ENV'] ||= 'production'
    

    然后在您的生产服务器上:

    RAILS_ENV=production rake db:migrate 
    
    RAILS_ENV=test production generate delayed_job:active_record && RAILS_ENV=production rake db:migrate
    

    在你这样做之后:

    RAILS_ENV=production script/delayed_job start
    

    至于您遇到的 Capistrano 错误,请尝试添加如下命令:

    run "cd #{current_path}; #{sudo} RACK_ENV=production bundle exec #{current_path}/bin/delayed_job start"
    

    【讨论】:

      猜你喜欢
      • 2013-09-17
      • 2013-11-26
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 2011-03-24
      相关资源
      最近更新 更多