试图让delayed_job 3.0.4作为守护进程运行

时间:2013-01-25 15:54:28

标签: ruby-on-rails delayed-job

所以我在生产应用程序上安装了delayed_job。它通过rake工作运行良好:工作。但是,当我尝试通过capistrano启动脚本时:

run "if [ -d #{current_path} ]; then cd #{current_path} && RAILS_ENV=#{rails_env} script/delayed_job start -n 2; fi"

它开始没有错误。但如果我检查script/delayed_job status它告诉我没有实例正在运行。有什么建议吗?

修改

看起来有些东西正在运行(通过sudo ps aux | grep delayed):

 1000      7952  0.0  0.1 112312   832 pts/0    S+   16:17   0:00 grep delayed

运行脚本时的输出:

/path/to/latest/release/config/initializers/bypass_ssl_verification_for_open_uri.rb:2: warning: already initialized constant VERIFY_PEER

2 个答案:

答案 0 :(得分:4)

检查共享/ tmp / pid文件夹的权限。

除非运行capistrano的用户有权将PID文件写入文件夹,否则延迟作业将不会运行。

答案 1 :(得分:0)

这就是我使用capistrano启动延迟工作恶魔的方法,也许这对你也有用:

require "delayed/recipes"

%w[start stop restart].each do |command|
  after "deploy:#{command}", "delayed_job:#{command}"
end

ps aux | grep delayed的输出仅显示其自己的进程,因此DJ未在您的计算机上运行。也许这与你的if - 条款有关。您可以尝试删除它,看看它是否使用ps aux | grep命令正确启动。输出应该是这样的:

username    9989  0.0  0.0   7640   892 pts/0    S+   10:54   0:00 grep delayed
username   10048  0.0  9.4 288244 99156 ?        Sl   Jan22   2:16 delayed_job