使用Capistrano在Rails 4中延迟作业(Delayed Job)

3
我不知道如何在专用Ubuntu服务器上启动Delayed Jobs。
在我的本地计算机上工作得很好,但是在服务器上运行时会遇到问题。
sudo RAILS_ENV=production bin/delayed_job restart

I get

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的配方。

提前致谢。

编辑:

我已经在本地安装了daemons gem并生成了"delayed_job:active_record",然后进行了cap deploy,在生产服务器中进行了bundle install和migrate操作。

bin/delayed_job文件在服务器上存在,但执行时提示命令未找到。


请确保在Gemfile中添加gem“daemons”,然后运行bundle install。您必须运行rails generate delayed_job:active_record && rake db:migrate。 - Eki Eqbal
@EkiEqbal 是的,我已经在本地机器上捆绑安装了daemons gem并生成了“delayed_job:active_record”。我是否还需要在生产服务器上运行它? - user3455909
请在您的生产服务器上运行它,或者如果您想要自动化生产服务器,请创建一个Capistrano配方。 - Eki Eqbal
运行如下 rake 任务:bundle exec rails generate delayed_job:active_record & bundle exec rake db:migrate。并请分享错误信息。 - Eki Eqbal
尝试在您的deploy.rb文件中添加类似于运行“cd #{current_path}; #{sudo} RACK_ENV=production bundle exec #{current_path}/bin/delayed_job start”的内容。 - Eki Eqbal
显示剩余10条评论
2个回答

0

你必须在目标服务器上运行此程序:

bundle exec rails generate delayed_job

0

并将此添加到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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接