我在让delayed_job重新启动时遇到问题。
当我登录并运行rake delayed_job RAILS_ENV=production
时,一切正常并且所有作业都得到处理,但是如果运行RAILS_ENV=production script/delayed_job restart
,则会启动一个新进程,但不会处理任何作业。
更新:我还应该提一下,我可以在我的开发机器上运行上述两个命令,在这两种情况下都可以正确处理所有延迟的作业。
更新:我删除了以前的更新,因为它是关于从我的机器运行脚本的,但是因为我在服务器上调用命令时无法使用delayed_jobs来处理任务,把事情变得更加复杂是没有用的。
更新:之前我提到过运行RAILS_ENV=production script/delayed_job restart
启动了一个进程,但没有进行任何处理。事实证明,即使在运行命令后显示pid,也没有进程与pid匹配,或者是否有任何其他ruby进程在运行。以下是脚本/ delayed_job文件的内容:
#!/usr/bin/env ruby
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize
我正在使用delayed_jobs v2.0.4
答案 0 :(得分:3)
根据对Terminal says delayed_job starting, but not doing anything的回复之一,守护程序gem v1.1.0存在问题。安装v.1.0.10后,它工作正常。它在我的开发机器上运行的原因是我已经安装了1.0.10版本。
感谢您的帮助。
答案 1 :(得分:2)
我遇到了同样的问题,你需要将环境作为参数传递给脚本。正确处理环境变量的脚本有一些怪癖:
ruby script/delayed_job -e production restart
答案 2 :(得分:0)
我有类似的问题让任何delayed_job守护进程启动。我追溯到权限问题。如果您使用的是部署用户,请确保脚本/ delayed_job和该用户可写的日志目录。或者,修改/ etc / group以授予该用户对这些文件上指定组的权限。
我的环境:
红宝石(ree-1.8.7-2012.02)
导轨(3.2.6)
delayed_job(3.0.3)
delayed_job_active_record(0.3.2)
守护进程(1.1.8)
答案 3 :(得分:0)
如果这是在您的生产计算机上,请确保您有权访问tmp / pids文件夹。没有它,你将无法创建任何守护进程。