我在Heroku(雪松),Ruby 2.1.6上运行Rails 4.2
我已经在Redis上使用Foreman在本地运行Sidekiq,在我的应用程序中,我调用Rails的新的ActiveJob deliver_later方法,如下所示application_helper.rb:
assigning_user = User.find(object.created_by)
completing_user = User.find(object.completed_by)
if NotificationMailer.assigned_user_completed_todo(object, completing_user, assigning_user).deliver_later
nn.email_status = "sent"
end
Run Code Online (Sandbox Code Playgroud)
在本地,这可以按预期工作.邮件显示在"邮件程序"队列中,然后使用sendgrid进行处理和传递.
在heroku run rails console我可以手动触发它,它工作得很好:
Loading production environment (Rails 4.2.1)
irb(main):001:0> a = Account.first
Account Load (1.5ms) SELECT "accounts".* FROM "accounts" ORDER BY "accounts"."id" ASC LIMIT 1
=> #<Account id: 1, name: "The Prestons", stripe_customer_id: nil, active_until: "2015-06-27 14:50:43", plan: nil, created_at: "2015-04-27 14:50:43", updated_at: "2015-04-27 14:50:43">
irb(main):002:0> NotificationMailer.new_account_created(a).deliver_later
Enqueued ActionMailer::DeliveryJob (Job ID: 7c0ddf9c-6892-4aa9-823e-9954b2a4e642) to Sidekiq(mailers) with …Run Code Online (Sandbox Code Playgroud)