3
作業隊列在daemonized時未添加到delayed_jobs表中。但是,當它不被守護進程時,這是有效的。Ruby on Rails - 延遲作業 - 作業隊列未添加到數據庫中
我有三個rake任務(a.rake,b.rake,c.rake)。
在a.rake
task :run_a => :environment do
A.new.get_a_data
end
class A
def get_a_data
...
schedule_next_a_job
end
def schedule_next_a_job
get_a_data
end
handle_asynchronously :get_a_data, :run_at => Proc.new { 2.minutes.from_now }, :queue => 'a'
end
在b.rake
task :run_b => :environment do
B.new.get_b_data
end
class B
def get_b_data
...
schedule_next_b_job
end
def schedule_next_b_job
get_b_data
end
handle_asynchronously :get_b_data, :run_at => Proc.new { 5.minutes.from_now }, :queue => 'b'
end
在c.rake
namespace :run do
task :start do
`rake run_a`
`rake run_b`
if Rails.env == 'development'
`QUEUES=a,b rake jobs:work`
else
`RAILS_ENV=production bin/delayed_job --queues=a,b start`
end
task :stop do
`rake jobs:clear`
end
end
在控制檯,我運行象下面這樣:
RAILS_ENV=production rake run:start # to start jobs worker
rake run:stop # to clear my jobs worker
在我的延遲工作表last_error被顯示爲:
作業未能負荷:未定義類/模塊A
工作未能加載:undefined class/module B
任何人都可以幫助我擺脫這個問題?
在此先感謝。
有你看看這個[解決方案](http://stackoverflow.com/questions/12518529/model-classes-not-loading-in-delayed-job-when-using-threadsafe#answer-12570405 )?? – 2014-09-11 07:00:21
@Gagan是的。需要'my_custom_class'的作品!謝謝 – 2014-09-11 07:36:02