2016-05-31 4 views
2

Ich habe Rails 5.0.0.rc1 sowie die DelayedJob gem installiert. Ich habe Code, der in früheren Rails-Apps (Rails4.2) einwandfrei funktionierte, aber aus irgendeinem Grund wird die Produktion auf Heroku jetzt nicht fortgesetzt.Rails 5 mit DelayedJob resultierte in einem Fehler

Kurz gesagt, ich versuche, eine E-Mail mit DelayedJob 'Handle_asynchronous' Methode zu senden. Ich habe den Mailer erstellt und den Rückruf in meinem Modell hinzugefügt, aber wenn ich das Formular auf Heroku abschicke, wird mir ein Fehlerbildschirm angezeigt. In meinen Protokollen sehe ich einen Fehler mit dem Argument 'ArgumentError: falsche Anzahl von Argumenten (1 gegeben, erwartet 0)'. Wenn ich die 'handle_asynchronous' Methoden entferne, funktionieren meine Callbacks. Offensichtlich möchte ich aber Mails etc. mit DelayedJob versenden.

Mein Code sieht wie folgt aus:

FooModel.rb 

.... 
after_create :send_welcome_mail 
def send_welcome_mail 
    FooMailer.welcome_email(self).deliver 
end 
handle_asynchronously :send_welcome_mail 

Wie ich schon erwähnt, dieser Code funktioniert einwandfrei mit Rails4. Könnte mir jemand helfen? Muss ich in Rails5 etwas anders machen?

+0

Können Sie die vollständige Fehler Spur hinterlassen? Mindestens ein paar Spitzenlinien. – BoraMa

+0

Welche Attribute haben Sie auf dem Modell? Dies kann auch bei Namenskonflikten auftreten. – Max

Antwort

4

Ich denke, es könnte eine gute Idee sein, ActiveJob als eine Abstraktion Ihres Warteschlangen-Backends zu verwenden. Etwas wie:

def send_welcome_mail 
    FooMailer.welcome_email(self).deliver_later 
end 

Dann würden Sie die handle_asynchronously Anruf nicht benötigen.

Verwandte Themen