2013-05-13 68 views
2

我花了大约3个小时试图让一个简单的delayed_job执行没有成功。我有这个极其简单的工作:Rails/delayed_job只是...不工作

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 ... 

和条目在delayed_backend_mongoid_jobs这样,

{ "_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_job实际上运行延迟工作,或至少告诉我是什么阻止它这样做?

+0

我无法回答你的问题,但我在几天内有延迟工作宝石类似的问题。最后我和rufus-scheduler一起去了,不知道你的要求是否允许。 – juanpastas 2013-05-13 23:18:29

回答

0

大概是在有点晚,但:

的问题是不是与DelayedJob但你的方法。 DelayedJob正在执行Foo.new.foo。

如果你试试这个:

class Foo 
    def foo 
    puts "hey!, the job is being executed!" 
    end 
end 

,你会看到在DelayedJob的输出日志字符串,然后delayedJob工作正常

你检查该轨(DelayedJob)有权写入/ tmp文件夹?

这个代码可能会有所帮助(test.txt的创建,并写在你的应用程序文件夹):

class Foo 
    def foo 
    `echo foo >> #{Rails.root.join "test.txt"}` #remember to delete test.txt! 
    end 
end 

如果一切正常,即test.txt文件被创建,其内容是foo,那么问题应该是有权限的东西,所以sudo script/delayed_job run可能会帮助