99m*_*les 12 ruby-on-rails resque devise
我正在尝试通过Resque发送Devise电子邮件.
通过Resque发送普通电子邮件就好了.并且Devise电子邮件发送得很好,但不会通过Resque发送电子邮件.我得到"找不到有效的映射",这意味着我的帮助程序覆盖不会被拾取.
我正在关注这个http://shaker.4-dogs.biz/2011/08/06/using-resque-to-send-mail-for-devise/
奇怪的是,调试它我正在使用Devise的本地副本,并在Devise中的'initialize_from_record'中添加断点,当我仅使用Devise时会受到攻击.但是当我通过resque发送Devise电子邮件时,断点不会受到影响:
class ResqueMailer < Devise::Mailer
include Resque::Mailer
end
config.mailer = "ResqueMailer"
Run Code Online (Sandbox Code Playgroud)
而resque则显示一个打包的gem路径,而不是我的本地源,例如:
/Users/mm/.rvm/gems/ruby-1.9.2-p290@evergreen/gems/devise-1.4.9/lib/devise/mailers/helpers.rb:20:in `devise_mail'
Run Code Online (Sandbox Code Playgroud)
知道为什么它不使用我的本地宝石源和/或如何让Resque发送我的Devise电子邮件?
小智 8
一种简单的方法是使用devise-async gem.
将gem添加到Gemfile中
# Gemfile
gem "devise-async"
Run Code Online (Sandbox Code Playgroud)
配置Devise以使用代理邮件程序.
# config/initializers/devise.rb
config.mailer = "Devise::Async::Proxy"
Run Code Online (Sandbox Code Playgroud)
[可选]最后告诉DeviseAsync使用Resque来排队电子邮件.
# config/initializers/devise_async.rb
Devise::Async.backend = :resque
Run Code Online (Sandbox Code Playgroud)
gem还支持Sidekiq和Delayed :: Job.
更新:您不需要使用resque_mailer>= 2.2.3执行此操作
https://github.com/devton/resqued_devise_mailer上的猴子补丁不起作用,因为它将完整模型作为参数发送给 Resque,而 Resque 最终将编组对象并令人皱眉(请参阅https://github上的持久性) .com/defunkt/resque)。
这对我有用:
使用 resque_mailer gem:https://github.com/zapnap/resque_mailer
gem 'resque_mailer'
Run Code Online (Sandbox Code Playgroud)
添加 lib/devise_resque_mailer.rb:参见https://gist.github.com/1375726
这将创建一个新的 DeviseResqueMailer 类,该类不会更改 Resque::Mailer 中的任何现有行为,因此您可以在其他邮件程序中使用该模块。
配置/初始化器/devise.rb:
Devise.setup do |config|
require 'devise_resque_mailer'
config.mailer = "DeviseResqueMailer"
Run Code Online (Sandbox Code Playgroud)
将您的设备视图从 app/views/devise/mailer/ 移动到 app/views/devise_resque_mailer/
| 归档时间: |
|
| 查看次数: |
3043 次 |
| 最近记录: |