2011-02-01 4 views
0

AR_Mailerは問題なく実行されていますが、約6か月間使用しています。私は最近、いくつかの管理用バックグラウンドジョブにDelayedJobを追加しました。 DelayedJobも電子メールを非常にうまく処理するので(DelayedMailer gemのおかげで)、私は自分のアプリケーションからAR_Mailerを完全に削除しました。メールをAR_MailerからDelayedJobに切り替えると失われた値

このメール以外はすべて正常に動作します。自動的に生成されるパスワードは失われます。

#app/models/notifier.rb 
def activation_instructions(user) 
from   default_email 
@bcc   = BACK_UP 
@subject  = "Activation instructions" 
recipients user.email 
sent_on  Time.now 
body   :root_url => root_url, :user => user 
end 

#app/views/notifier/activation_instructions.erb 
Thanks for signing up. 

Your password is <%[email protected]%>. For security reasons please change this on your first connection. 

[....] 

なぜこのバグが発生するのですか? ありがとう!

設定:問題があった場所のRails 2.3.2 & DelayedJob 2.0.4

答えて

2

は、私が見つけました。

--- !ruby/struct:Delayed::PerformableMethod 
    object: LOAD;Notifier 
    method: :deliver_activation_instructions! 
    args: 
    - LOAD;User;589 

userパラメータは、電子メールを送信する前にdelayed_jobすることによって、データベースから再ロードされます。私はdelayed_jobsテーブルに作成されるエントリでデータベースに見えました。その場合、パスワードはデータベースに保存されていないため失われます。

だから私は、明示的にパスワードを渡すために、コードを更新しました:

#app/models/notifier.rb 
def activation_instructions(user, password) 
from   default_email 
@bcc   = BACK_UP 
@subject  = "Activation instructions" 
recipients user.email 
sent_on  Time.now 
body   :root_url => root_url, :user => user, :password => password 
end 

#app/views/notifier/activation_instructions.erb 
Thanks for signing up. 

Your password is <%[email protected]%>. For security reasons please change this on your first connection. 

[....] 

が、これはあまりにも他のお役に立てば幸い!

関連する問題