2011-11-14 20 views
12

Estoy tratando de enviar correos electrónicos a través de Resque.Enviando Diseña correos electrónicos a través de Resque

correos electrónicos regulares están siendo enviados a través Resque bien. Y los correos electrónicos Idee se envían bien, pero no Idean correos electrónicos a través de Resque. Obtengo "No se pudo encontrar un mapa válido", lo que implica que mis reemplazos de ayudantes no se recogen.

que sigo este http://shaker.4-dogs.biz/2011/08/06/using-resque-to-send-mail-for-devise/

Lo curioso es que para depurarlo estoy usando una copia local de Idear y la adición de puntos de interrupción en 'initialize_from_record' en Diseñar, que es golpeado cuando sólo tiene que utilizar solos Diseñar . Pero cuando envío de los correos electrónicos a través Idear resque los puntos de interrupción no ser golpeado:

class ResqueMailer < Devise::Mailer 
    include Resque::Mailer 
end 

config.mailer = "ResqueMailer" 

Y resque lugar muestra un camino joya empaquetados y no es mi fuente local, tales como:

/Users/mm/.rvm/gems/[email protected]/gems/devise-1.4.9/lib/devise/mailers/helpers.rb:20:in `devise_mail' 

Cualquier idea de por qué no está usando mi fuente local de gemas Y/O cómo hacer que Resque envíe mis correos electrónicos de Devise?

+0

Esto parece estar arreglado con la última versión de resque_mailer (2.2.3). – tee

Respuesta

4

Actualización: no es necesario hacer esto con resque_mailer> = 2.2.3

El parche mono en https://github.com/devton/resqued_devise_mailer no funcionó ya que envía el modelo completo como un argumento a Resque, que terminará alinear el objeto y está mal visto (ver Persistencia en https://github.com/defunkt/resque).

Esto es lo que funcionó para mí:

Utilice la gema resque_mailer: https://github.com/zapnap/resque_mailer

gem 'resque_mailer' 

Añadir lib/devise_resque_mailer.rb: ver https://gist.github.com/1375726

que crea una nueva clase DeviseResqueMailer que no cambiará cualquier comportamiento existente en Resque :: Mailer, por lo que puede usar ese módulo en otros anuncios publicitarios.

config/inicializadores/devise.rb:

Devise.setup do |config| 
    require 'devise_resque_mailer' 
    config.mailer = "DeviseResqueMailer" 

Mueve los puntos de vista de Idear app/views/diseñar/bolsas/a app/views/devise_resque_mailer/

+1

El truco anterior no es necesario con la última versión de resque_mailer (2.2.3). – tee

+0

¿qué es el "truco" anterior? ¿La respuesta completa o una parte específica de la respuesta? –

+0

La respuesta completa es el truco. resque_mailer debería funcionar fuera de la caja a partir de 2.2.3+. – tee

8

Una forma sencilla es utilizar el devise-async gema.

Añadir la gema a su Gemfile

# Gemfile 
gem "devise-async" 

Configurar Diseñar para utilizar el programa de correo proxy.

# config/initializers/devise.rb 
config.mailer = "Devise::Async::Proxy" 

[Opcional] Y por último decir DeviseAsync utilizar Resque a poner en cola los mensajes de correo electrónico.

# config/initializers/devise_async.rb 
Devise::Async.backend = :resque 

La gema también admite Sidekiq y Delayed :: Job.

+0

¿Pasa esta gema a través de resque mailer o es una cola completamente diferente? –

Cuestiones relacionadas