Pregunta

He estado trabajando en una aplicación de rieles que utiliza el complemento de autenticación reparador. Se requiere un nuevo usuario a activar su cuenta a través de la verificación de correo electrónico. Esto ha estado trabajando hasta hace unas horas, cuando la aplicación de repente comenzó a fallar en la entrega de correo electrónico. En su lugar me da la bienvenida con el mensaje de error siguiente:

 undefined method `perform_delivery_SMTP' for #<UserMailer:0x28ec7ac>

He vuelto a una revisión antigua, creado nuevas aplicaciones con actionmailer, reinstalado rieles, volver a instalar todos los plugins y gemas, pero persiste el error. ¿Alguien ha visto este error antes? Al parecer, tengo que añadir el método perform_delivery_SMTP al modelo UserMailer, sino cómo y por qué? Gracias.

¿Fue útil?

Solución

Qué

Cuando configura el gestor de correo?

Supongo que el método de entrega se establece como esto

ActionMailer::Base.delivery_method 'SMTP'

Uso :smtp en lugar de 'SMTP'

ActionMailer asume que va a utilizar :sendmail, :test o deliver!

Utiliza que en el método delivery_method como tal

__send__("perform_delivery_#{delivery_method}", mail) if perform_deliveries

lo que significa que cuando perform_delivery_SMTP está ajustado a 'SMTP' se tratará de llamar perform_delivery_smtp, que no existe como lo encontró a cabo. Cuando se utiliza el símbolo <=> que llama <=>, que no existe.

Otros consejos

Los que han estado luchando con ActionMailer funcionando bien en el servidor local (modo de desarrollo) y no funciona en el modo de producción deberían considerar siguiente enlace:

http://filiptepper.com/ 2009/02/11 / pista de fijación-smtp_tlsrb-para-ruby-187 /

Se resolvió mi problema, podría ser útil para otros también. Básicamente el problema es que “check_auth_args en Net :: SMTP toma diferentes argumentos en Ruby 1.8.7 (que estoy usando para el desarrollo) y en Ruby 1.8.6 (puesta en escena)”. Y lo peor es que no sale un error en el archivo production.log. Para verificar que realmente era el problema que tenía que ejecutar ActionMailer para enviar correo electrónico desde el guión / consola donde se levantó el error de número incorrecto de argumentos ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top