Pergunta

Eu tenho trabalhado em uma aplicação rails que usa o plugin de autenticação repousante. Ela exige um novo usuário para ativar sua conta através da verificação de e-mail. Este tem vindo a trabalhar até algumas horas atrás, quando a aplicação de repente começou a falhar na entrega de e-mail. Em vez disso eu sou cumprimentado com a seguinte mensagem de erro:

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

Eu revertido para uma revisão antiga, criou novos aplicativos com ActionMailer, trilhos reinstalados, reinstalado todos os plugins e pedras preciosas, mas as persistir erro. Alguém já viu este erro antes? Parece que eu preciso adicionar o método perform_delivery_SMTP ao modelo UserMailer, mas como e por quê? Obrigado.

Foi útil?

Solução

Onde você configurar o seu cliente?

Eu estou supondo que o seu método de entrega é definido como este

ActionMailer::Base.delivery_method 'SMTP'

Use :smtp em vez de 'SMTP'

ActionMailer assume que você vai usar :smtp, :sendmail ou :test

Ele usa que no método deliver! como assim

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

O que significa que quando delivery_method é definido como 'SMTP' Ele vai tentar perform_delivery_SMTP chamada, que não existe como você descobriu. Quando você usa o :smtp símbolo que chama perform_delivery_smtp, que não existe.

Outras dicas

Aqueles que têm lutado com fina ActionMailer trabalhando em servidor local (modo de desenvolvimento) e não funciona no modo de produção deve considerar seguinte link:

http://filiptepper.com/ 2009/02/11 /-dica fixação de smtp_tlsrb-for-ruby-187 /

Ele resolveu o meu problema, pode ser útil para os outros também. Basicamente, o problema é que “check_auth_args em Net :: SMTP leva argumentos diferentes em Ruby 1.8.7 (que eu estou usando para o desenvolvimento) e em Ruby 1.8.6 (estadiamento)”. E o pior é que ele não deixa um erro no arquivo production.log. Para verificar se era realmente o problema que eu tive que correr ActionMailer para enviar e-mail a partir do script / console onde se levantou o erro de número errado de argumentos ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top