如何使用sidekiq与devise发送没有设计异步的电子邮件

时间:2016-07-15 11:53:17

标签: ruby-on-rails-4 devise sidekiq

我目前正在开发rails 4应用程序。我使用devise进行身份验证。我想使用Sidekiq发送电子邮件。我找到了这个tuto https://github.com/mperham/sidekiq/wiki/Devise,但我无法弄清楚我应该把队列的名字放在哪里。任何人都可以用一个要点帮助我。谢谢

2 个答案:

答案 0 :(得分:1)

根据该Wiki页面上显示的代码段,您可以执行以下操作:

Devise::Mailer.delay(queue: 'my_queue').send(...)

答案 1 :(得分:0)

一旦将Sidekiq添加到Rails应用程序中(请参阅link to getting started),为了将devise与Sidekiq一起使用(不带devise-async),可以使用ActiveJob中内置的rails。将此替代功能放在设计实现的模型中:

 def send_devise_notification(notification, *args)
  devise_mailer.send(notification, self, *args).deliver_later
 end

使用ActiveJob配置Sideiq

# config/application.rb

class Application < Rails::Application
  # ...
  config.active_job.queue_adapter = :sidekiq
end

并为Sidekiq设置邮件队列

# config/sidekiq.yml

---
:concurrency: 1
:queues:
  - default
  - mailers

还应该安装redis来保存sidekiq的作业数据,所有操作都将更详细地here