【发布时间】:2012-11-07 06:28:30
【问题描述】:
我目前正在构建一个 Rails 平台,并且我已经使用 devise 进行身份验证,现在想使用 sidekiq 将默认的 devise 电子邮件移动到后台进程中。我为此使用了 devise-async 并做了以下事情:
添加了 devise_async.rb 文件:
#config/initializers/devise_async.rb
Devise::Async.backend = :sidekiq
在设计模型中添加了异步命令:
#user.rb
devise :database_authenticatable, :async #etc.
宝石的版本如下:
Devise 2.1.2
Devise-async 0.4.0
Sidekiq 2.5.3
我遇到的问题是电子邮件在 sidekiq 队列中传递,但工作人员从不执行发送电子邮件。我也看过devise async not working with sidekiq,他似乎也有同样的问题。但我认为我对 hostname 命令没有问题。
对这个问题有什么想法吗?
【问题讨论】:
-
问起来可能很愚蠢,但是您是否有一个单独的工作进程通过
bundle exec sidekiq -C config.yaml或类似的方式运行? -
问这个问题其实并不愚蠢,因为我认为这样的事情一直都在发生。我实际上使用
redis-server启动了redis,然后使用bundle exec sidekiq启动了sidekiq。问题是我知道 sidekiq 正在工作,因为我还在后台进程中发送邮件以获取邀请,这与设计是分开的。 -
试试
bundle exec sidekiq -q mailer我认为设计异步使用邮件队列不是默认的。 -
非常感谢 :) 它实际上解决了这个问题。我猜 sidekiq 默认只服务于它的
default队列,所以你必须告诉 sidekiq 使用mailer队列。我一定会把它传递给 devise-async 模块,以便他们可以将它包含在他们的文档中!
标签: ruby-on-rails-3 devise sidekiq