Gli utenti appena registrati alla mia piccola app devono essere approvati dall'amministratore (io) prima che possano accedere al sito. Sono riuscito a generare email di questo tipo in fase di sviluppo con un after_create :send_admin_email
nel mio modello utente che funziona alla grande. Il mio problema è che sto generando più utenti durante i miei test (usando FactoryGirl) e ogni utente di test creato invia una vera e-mail. Eseguire i miei test è come versare melassa a gennaio e devo eliminare centinaia di e-mail inviate alla mia casella di posta. Come lo spengo?ActionMailer invia email reali in modalità test! - Come spegnere?
Action Mailer Basics nello mi dice che "Per impostazione predefinita, Action Mailer non invia e-mail nell'ambiente di test. Sono appena stati aggiunti all'array ActionMailer :: Base.deliveries."
Inoltre, in config/environments/test.rb
ho:
config.action_mailer.delivery_method = :test
che è in aggiunta al config/environment.rb
avere:
# Configuration for using SendGrid on Heroku
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => 'app[my app number]@heroku.com',
:password => '[something super secret]',
:domain => '[let's get this party started!.com]',
:enable_starttls_auto => true
}
ActionMailer::Base.delivery_method = :smtp
Sono sicuro che mi manca qualcosa di semplice e di base. Ho cercato in giro e le domande e i post correlati si occupano di come testare che ActionMailer abbia effettivamente inviato email.
Umile gratitudine in anticipo per qualsiasi pensiero o aiuto.
Addendum: in seguito a una risposta a una domanda simile trovata a Is it possible to turn off ActionMailer emails when cucumber testing is happening on development?, ho potuto interrompere l'invio di messaggi di follia. Tuttavia, ho dovuto aggiungere ActionMailer::Base.delivery_method = :test
a diversi file rspec. C'è un modo per chiuderlo globalmente? Qualcuno ha qualche idea su cosa sta succedendo?
Con tutte queste e-mail, ho superato il limite di 200/giorno consentito da Invia griglia. Ho trovato [Come scrivere funzioni che in realtà non usano Sendgrid?] (Https://groups.google.com/group/heroku/browse_thread/thread/7a4044f299ccf1fc/a0d687041fd97389?pli=1) che dice che 'ActionMailer :: Base.delivery_method =: smtp 'in' config/environment.rb' sta sovrascrivendo 'config.action_mailer.delivery_method =: test' in' config/environments/test.rb' Ho spostato 'ActionMailer :: Base.delivery_method =: smtp 'in 'config/environments/development.rb' e' config/environments/production.rb' che potrebbero funzionare. Aggiorneremo domani. – BenU