小编Jas*_*ton的帖子

当从应用程序(而不是控制台)调用时,如何让ActiveJob在Herki上将Sidekiq中的作业排入队列?

我在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)

ruby-on-rails heroku sidekiq ruby-on-rails-4.2

24
推荐指数
1
解决办法
2万
查看次数