2010-12-11 4 views
6

Ich bin mit dem delayed_job Juwel hier: https://github.com/collectiveidea/delayed_jobRails 3 - Delayed_Job (collectiveidea), versuchen zu verzögern Mailers - Fehler: NoMethodError (nicht definierte Methode `Verzögerung‘ für UserMailer: Klasse)

ich in eine der folgenden haben Beobachter:

UserMailer.delay.msg_notification(record) 

In user_mailer.rb

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

Aber diese Fehler mit:

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

Irgendwelche Ideen? Danke

+0

haben Sie doppelt überprüft, um sicherzustellen, dass sich der Edelstein in Ihrer Edelsteindatei befindet und Sie die Bündelinstallation ausgeführt haben. Haben Sie bereits die Backend-Tabellen erstellt, die der Edelstein benötigt, wie in der Dokumentation beschrieben? –

Antwort

4

Ich habe ein Problem wie dieses auf unserer Rails App gesehen (2.3.8, aber das Problem klingt das gleiche). Grundsätzlich gibt es drei Möglichkeiten, um eine Aktion zu verzögern:

  1. MyClass.delay.foo(arg)
  2. handle_asynchronously :foo in Ihrer Klassendefinition nach der Definition von foo Putting
  3. MyClass.send_later(:foo, arg)

Aus welchem ​​Grunde auch immer, # 3 war die nur eine Form, die konsequent auf allen unseren Entwicklungsmaschinen funktioniert. # 1 starb auf unserem Entwicklungsserver (Ubuntu); # 2 auf dem Mac unseres Designers. Aber # 3 war in Ordnung.

Hoffe, dass hilft!

+0

[DEPRECATION] 'object.send_later (: Methode)' ist veraltet. Verwenden Sie 'object.delay.method', aber es funktioniert immer noch nicht für mich –

+0

@Lucas Ich habe das nur mit Rails 2.3.8 versucht, also was Sie sehen, könnte eine Rails 3 Sache sein. Oder Sie könnten eine andere Gabel von delayed_job versuchen - es gibt Bündel (wir verwenden CollectiveIdea's, denke ich). Oder es könnte einfach auf der ganzen Linie veraltet sein - was eine schreckliche Nachricht wäre, denn 'send_later' war die einzige, die durchgängig funktioniert hat! Vielleicht ist ein Fehlerbericht in Ordnung ... –

2

Überprüfen Sie auch, ob Sie Ihren Server nach der Bundle-Installation neu gestartet haben. Das könnte auch ein Problem sein ...

Verwandte Themen