0

だから、メーラーapp/mailers/dynamic_mailer.rbとモデルを手に入れapp/models/email_message/outgoing.rbました。方法があります:

class EmailMessage::Outgoing < EmailMessage
...
  def deliver_mail
     l = ::DynamicMailer.email_message(self).deliver!
     Rails.logger.info "SEND MAIL: #{l.inspect}"
     update_attribute(:received_at, Time.now)
  end

ローカル(開発環境)では、すべてが正常に機能します。この問題は、アプリをサーバー(ステージング環境)にデプロイし、そこにメールフォームを送信しようとすると発生します。遅延したジョブの印刷:

[Worker(host:rdev pid:2279)] EmailMessage::Outgoing#send_email! 
  failed with NameError: uninitialized constant 
  EmailMessage::Outgoing::DynamicMailer - 11 failed attempts

サーバーにクラスをロードする際の問題のようです。クラス名が失敗する前に二重コロンを削除します。

どんな助けでも大歓迎です。

4

2 に答える 2

1

DynamicMailerを使用して、明らかにこのようなモデルのファイルでファイルを指定してみてくださいrequire 'app/mailers/dynamic_mailer.rb'。おそらくそれは必要なクラスを見つけるのに役立つでしょう。
また、エラーメッセージにメソッドが記載されていることに気づきましたが、send_email!ここにメソッドを投稿しましたdef deliver_mail。私が何かを理解していないか、あなたが間違った場所を探しているかどうか。

于 2012-06-27T16:51:55.293 に答える
0

遅延ジョブデーモンを再起動するのを忘れました。

Gemfileにgem'daemons'を追加し、次のようにレシピを更新することで、capistranoでそれを行うことができます:http://cmar.me/2011/02/21/delayed_job-with-rails-3-and-capistrano/

于 2012-06-28T09:54:50.437 に答える