2010-12-11 10 views
6

私はここにdelayed_job宝石使用しています:https://github.com/collectiveidea/delayed_jobRailsの3 - Delayed_Job(collectiveidea)、ディレイメーラーにしよう - エラー:NoMethodError(UserMailerのための未定義のメソッド `遅延」:クラス)

私は、次のしているがオブザーバー:user_mailer.rb

class UserMailer < ActionMailer::Base 
... 
def msg_notification(record) 
    mail( 
      :to => "#{record.user.email}", 
      :subject => "Notification" 
     ) 
    end 
.. 
end 

UserMailer.delay.msg_notification(record) 

しかし、このエラーが発生した:

NoMethodError (undefined method `delay' for UserMailer:Class): 

アイデア?ありがとう

+0

gemがgemファイルに含まれていることと、バンドルインストールを実行したことを確認するためにダブルチェックをしましたか?また、ドキュメントに記載されているように、宝石が必要とするバックエンドテーブルをすでに作成していますか? –

答えて

4

私はこのような問題をRailsアプリケーションで見たことがあります(2.3.8、しかし問題は同じです)。 FOO何らかの理由

  • MyClass.send_later(:foo, arg)
  • の定義の後、あなたのクラス定義でhandle_asynchronously :fooを置く

    1. MyClass.delay.foo(arg)
    2. #3だった、:基本的には、アクションを遅らせるには、3つの方法がありますすべての開発マシンで一貫して機能するフォームだけです。 #1は私たちの開発サーバー(Ubuntu)で死んだ。私たちのデザイナーのMacで#2。しかし、#3は元気でした。

      希望に役立ちます!

    +0

    [退院] 'object.send_later(:method)'は推奨されていません。 'object.delay.method'を使用しますが、それでも私のためには機能しません –

    +0

    @ルーカス私はこれをRails 2.3.8で試しただけです。見ているものはRails 3のものかもしれません。または、delayed_jobの別のフォークを試すこともできます - 束があります(私たちはCollectiveIdeaを使用しています)。あるいは、それは恐ろしいニュースでしょう、なぜなら 'send_later'だけが一貫して働いたからです!おそらく、バグレポートが順番に... –

    2

    また、バンドルのインストール後にサーバーを再起動したかどうかを確認します。これは問題かもしれません...

    関連する問題