2010-09-21 54 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