所以我在生产应用程序上安装了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
答案 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