簡體   English   中英

Delayed_job:NoMethodError:未定義的方法“my_method_without_delay”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM