我使用延遲作業版本2.1.4與行動郵件程序3.0.8發送我的電子郵件在後臺。延遲作業乘客生產未定義方法錯誤
UserMailer.delay.newsletter(email)
它精細的工作與我在開發和生產的Rails 控制檯。
但是,當它從我的生活生產乘客服務器調用,它會創建DJ但這DJ運行時,它拋出
{undefined method `newsletter' for #<Class:0xc08afa0>
我認爲這個問題
任何幫助嗎?
我使用延遲作業版本2.1.4與行動郵件程序3.0.8發送我的電子郵件在後臺。延遲作業乘客生產未定義方法錯誤
UserMailer.delay.newsletter(email)
它精細的工作與我在開發和生產的Rails 控制檯。
但是,當它從我的生活生產乘客服務器調用,它會創建DJ但這DJ運行時,它拋出
{undefined method `newsletter' for #<Class:0xc08afa0>
我認爲這個問題
任何幫助嗎?
問題是與軌道/生產模式類方法
所以乘客,我做了它的解決方案工作...我會嘗試調用實例方法,避免調用類方法。
讓我們看一個例子;假設我需要調用後臺下面的方法..
UserMailer.deliver_newsletter(email)
然後,我創建了一個新的類DelayClassMethod
class DelayClassMethod
def initialize(receiver_name, method_name, options={})
@receiver_name = receiver_name
@method_name = method_name
@parameters = options[:params] || []
end
def perform
eval(@receiver_name).send(@method_name, *@parameters)
end
end
,現在可供
DelayClassMethod.new("UserMailer", "deliver_newsletter", :params=>[email]).delay
在後臺運行的方法所以,我現在在後臺運行一個實例方法,該方法將運行類方法。
另一個例子..
假設我想運行
Product.list_all_by_user_and_category(user, category).delay
然後,它可以通過
DelayClassMethod.new("Product", "list_all_by_user_and_category", :params => [user, category]).delay
我的預感是你有多個版本的delayed_job正在製作中。您是否使用捆綁器來啓動延遲的工作流程?
我會在做bundle install in production時推薦,我會使用--binstubs標誌來生成delayed_job的包裝並使用該可執行文件來啓動作業。
運行沒有,我只有一個版本。我嘗試了bundle exec rake作業:工作但仍然是同樣的錯誤。 –