2010-09-21 52 views
0

我想在heroku上运行delayed_job,它似乎没有工作。于是我走进Heroku的控制台来检查什么可能会被去以下方面:如何解释heroku上的delayed_job错误?

Delayed::Job.find(:last) 

这是我回来了:

=> #<Delayed::Job id: 241, priority: 0, attempts: 22, handler: "--- !ruby/struct 
:SomeMailJob \ncontact: !ruby/object...", last_error: "undefined method `subject 
' for #<YAML::Object:0x2ab...", run_at: "2010-09-20 05:26:52", locked_at: nil, f 
ailed_at: nil, locked_by: nil, created_at: "2010-09-10 03:31:05", updated_at: "2 
010-09-17 23:25:26"> 

我不知道做什么用这......我不知道这个YAML对象是什么,或者为什么它是未定义的......我如何开始钻取更好?

回答

4

请看SomeMailJob中的perform方法。这会给你更多的线索。您可能还想打印last_error以获取完整的堆栈跟踪。 puts Delayed::Job.find(:last).last_error会为你做。

您也可以加载处理程序对象:

handler = YAML.load(Delayed::Job.find(:last)).handler 

一旦有了对象,你可以使用它,你想要的任何方式。

+0

有没有办法让我检查对象? – Angela 2010-09-21 23:52:05

+0

'对象#检查'将产生你已经打印的东西。但是,您可以重写'to_s'方法并使其更具可读性。 – Swanand 2010-09-22 05:30:20