2016-06-17 7 views
3
Senden

Ich habe die folgende Methode:ActiveJob deliver_later nicht

UserMailer.comment_alert(@comment, user, type).deliver_later 

Welche seltsam mit dem param zeigt sich deliver_now in den Schienen log:

[ActiveJob] Enqueued ActionMailer::DeliveryJob (Job ID: 5bdf9ed1-53d5-42aa-acb2-7ce54ab284e1) to Sidekiq(mailers) with arguments: "UserMailer", "comment_alert", "deliver_now", gid://xxx/Comment/153, gid://xxx/User/26, "Comment" 

Der Job nie verarbeitet, und ich sehe nichts in das Sidekiq-Protokoll. Es wird auch niemals eine Mail geliefert. Ich versuchte sidekiq, rails und redis neu zu starten und löschte sogar die redis-db. Interessanterweise an sich verändernde .deliver_now funktioniert, aber dies scheint nicht sidekiq zu berühren oder einen Enqueued ActionMailer::DeliveryJob

In meinem application.rb erstellen:

config.active_job.queue_adapter = :sidekiq 

Ich bin mit Schienen 4.2.6 mit activejob 4.2. 6

Antwort

13

Mailer werden in die Warteschlangenmailer eingereiht. Denken Sie daran, sidekiq Verarbeitung zu starten, die Warteschlange:

bundle exec sidekiq -q default -q mailers 

Oder fügen config/sidekiq.yml mit folgendem Inhalt

:verbose: true 
    :concurrency: 25 
    :queues: 
    - [mailers, 7] 
    - [default, 5] 

Und laufen bundle exec sidekiq -C config/sidekiq.yml

+0

Danke, dass für mich zu lösen. – Abram

+1

Sie sind willkommen –

+0

Diese ** - q Standard-q Mailer ** ist Hilfe für mich bei 2017. Sidekiq 5.0.5, Rails 5.1.4. Vielen Dank! –