Ruby on rails Rails/delayed_作业刚刚。。。不起作用

Ruby on rails Rails/delayed_作业刚刚。。。不起作用,ruby-on-rails,ruby-on-rails-3,mongoid,delayed-job,Ruby On Rails,Ruby On Rails 3,Mongoid,Delayed Job,我花了大约3个小时试图让一个简单的延迟作业执行,但没有成功。我的工作非常简单: class Foo def foo `echo foo >> /tmp/mrsmee` end end 我将它放入Rails操作的队列中,如下所示: Foo.new.delay.foo() 我正在运行作业处理器,如下所示: $ script/delayed_job run 我看到一堆这样的输出日志 2013-05-13T15:21:12-0700: [Worker(delayed_j

我花了大约3个小时试图让一个简单的
延迟作业执行,但没有成功。我的工作非常简单:

class Foo
  def foo
    `echo foo >> /tmp/mrsmee`
  end
end
我将它放入Rails操作的队列中,如下所示:

Foo.new.delay.foo()
我正在运行作业处理器,如下所示:

$ script/delayed_job run
我看到一堆这样的输出日志

2013-05-13T15:21:12-0700: [Worker(delayed_job host:asha.local pid:73263)] 1 jobs processed at 35.6405 j/s, 0 failed ...
{ "_id" : ObjectId("51916452005056107900001a"), "priority" : 0, "attempts" : 0, "queue" : null, "handler" : "--- !ruby/object:Delayed::PerformableMethod\nobject: !ruby/object:Foo {}\nmethod_name: :foo\nargs: []\n", "run_at" : ISODate("2013-05-13T22:08:18.560Z"), "updated_at" : ISODate("2013-05-13T22:08:18.560Z"), "created_at" : ISODate("2013-05-13T22:08:18.560Z") }
以及
延迟的\u后端\u mongoid\u作业中的条目
如下所示

2013-05-13T15:21:12-0700: [Worker(delayed_job host:asha.local pid:73263)] 1 jobs processed at 35.6405 j/s, 0 failed ...
{ "_id" : ObjectId("51916452005056107900001a"), "priority" : 0, "attempts" : 0, "queue" : null, "handler" : "--- !ruby/object:Delayed::PerformableMethod\nobject: !ruby/object:Foo {}\nmethod_name: :foo\nargs: []\n", "run_at" : ISODate("2013-05-13T22:08:18.560Z"), "updated_at" : ISODate("2013-05-13T22:08:18.560Z"), "created_at" : ISODate("2013-05-13T22:08:18.560Z") }

很明显,作业正在排队、处理和退出。太糟糕了,测试输出文件,
/tmp/mrsmee
,从未写入任何内容。我完全不知所措。为什么
delayed\u job
没有实际运行延迟的作业,或者至少告诉我是什么阻止了它这样做?

可能有点晚了,但是:

问题不在于延迟工作,而在于你的方法。DelayedJob正在执行Foo.new.Foo

如果您尝试以下方法:

class Foo
  def foo
    puts "hey!, the job is being executed!"
  end
end
您在DelayedJob的输出日志中看到该字符串,那么DelayedJob工作正常

您是否已检查rails(DelayedJob)是否具有写入/tmp文件夹的权限

此代码也可能有帮助(test.txt创建并写入应用程序文件夹中):


如果这样做有效,即创建test.txt文件且其内容为foo,那么问题应该是权限问题,因此
sudo script/delayed_job run
可能会有所帮助

我无法回答您的问题,但我在几天内遇到了与延迟job gem类似的问题。最后,我选择了rufus scheduler,不知道您的需求是否允许。