2013-05-13 70 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可能會幫助