我正在運行延遲作業工。當我調用foo
方法時,工作人員打印hello
。延遲作業:如何在開發模式下每次調用期間重新加載有效載荷類
class User
def foo
puts "Hello"
end
handle_asynchronously :foo
end
如果我做了一些更改foo
方法,我必須重新啓動工人的變化來反映。在開發模式中,這可能變得非常煩人。
我想找到一種方法來重新載入每個請求的有效載荷類(在這種情況下,用戶類)。我試圖在調用payload方法之前調用DelayedJob庫來調用require_dependency
。
module Delayed::Backend::Base
def payload_object_with_reload
if Rails.env.development? and @payload_object_with_reload.nil?
require_dependency(File.join(Rails.root, "app", "models", "user.rb"))
end
@payload_object_with_reload ||= payload_object_without_reload
end
alias_method_chain :payload_object, :reload
end
這種做法並不如使用require_dependency
需要註冊類工作,以調用之前重新加載,我還沒有想出如何做到這一點。我花了一些時間閱讀調度程序代碼,找出Rails如何爲每個請求重新加載類。我無法找到重新加載代碼。
有沒有人試過這個?你會如何建議我繼續?或者你有任何指針來定位Rails類重載代碼?
謝謝!這很好,即使在後端使用mongoid。我只需要刪除它的第一行工作:) – 2011-07-28 04:18:05