![](/img/trans.png)
[英]Rails 3 - Delayed_Job (collectiveidea), trying to Delay Mailers - Error: NoMethodError (undefined method `delay' for UserMailer:Class)
[英]Delayed_job : NoMethodError: undefined method `my_method_without_delay'
使用rails 2.3.11 和delayed_job 2.0.4 作為gem 使用handle_asynchronously
時出現錯誤:
在我的 ActionMailer model 中,我刪除了 my_method 並在聲明之后添加了“handle_asynchronously:my_method”:
class MailSender < ActionMailer::Base
def my_method
...
end
handle_asynchronously :my_method
end
調用MailSender.deliver_my_method
時,任務已正確添加到隊列中。 但是在嘗試處理它時,它會失敗並顯示錯誤消息:
undefined method `rappel_email_without_delay' for #<YAML::Object:0x1034b85f8>
使用MailSender.delay.deliver_my_method
進行延遲正在工作並且任務已正確處理 - 但我寧願在我的 model 上使用handle_asynchronously
來確保郵件始終在后台發送......
您需要使用重新啟動工作進程
耙工作:工作
在 3.2.3 中也有這個問題。
通過在每次代碼更改后重新啟動 DJ 進程來修復它。
您仍然可以使用 handle_asynchronously 宏進行聲明,但是使用 ActionMailer 調用延遲作業的語法有點不同。
# without delayed_job
MailSender.my_method.deliver
# with delayed_job
MailSerder.delay.my_method
這是從舊版本的 README 中提取的,但它不在當前版本中,因此可能有新版本的延遲作業可以解決這個細微差別。
我遇到了同樣的問題,最終遇到了以下帖子。 基本上,delayed_job 工作人員似乎難以解組非 ActiveRecord 對象。 對我有用的快速修復是在初始化程序或 environment.rb 中要求您的 class,例如
# config/environment.rb
...
require 'mail_sender'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.