ActionMailer envoie de vrais e-mails en mode test! - Comment désactiver?
les utilisateurs nouvellement inscrits à ma petite application doivent être approuvés par l'administrateur (moi) avant de pouvoir accéder au site. J'ai réussi à générer de tels e-mails en développement avec un after_create :send_admin_email
dans mon modèle utilisateur qui fonctionne très bien. Mon problème est que je génère plusieurs utilisateurs pendant mes tests (en utilisant FactoryGirl) et chaque utilisateur de test créé envoie un vrai e-mail. Faire mes tests c'est comme verser de la mélasse en janvier et je dois supprimer des centaines d'e-mails envoyés à ma boîte de réception. Comment puis-je désactiver cette fonction?
Action Mailer "Bases de 1519100920" dans le Rails Guides me dit que "Par défaut Action Mailer ne pas envoyer d'e-mails dans l'environnement de test. Ils sont simplement ajoutés à L'ActionMailer::Base.tableau des livraisons."
de plus, dans config/environments/test.rb
j'ai:
config.action_mailer.delivery_method = :test
en plus de config/environment.rb
ayant:
# 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
je suis je suis sûr que je manque quelque chose de simple et basique. J'ai cherché autour et les questions et les messages connexes traitent de la façon de tester que ActionMailer a réellement envoyé le courrier électronique.
Humble gratitude à l'avance pour toute pensée ou aide.
Addendum: suite réponse à une question similaire trouvée à est - il possible d'éteindre les emails ActionMailer lorsque le test du concombre est en cours sur le développement? j'ai pu arrêter l'envoi d'e-mail folie. Néanmoins, j'ai dû ajouter ActionMailer::Base.delivery_method = :test
à plusieurs fichiers rspec. Est il possible que je peux fermer ce bas monde? N'importe qui ont des idées sur ce qu'il se passe?
3 réponses
donc j'ai compris. Ayant la ligne ActionMailer::Base.delivery_method = :smtp
dans config/environment.rb remplace ActionMailer::Base.delivery_method = :test
dans config/environments/test.RB.
donc, supprimer cette ligne, ActionMailer::Base.delivery_method = :smtp'
de config / environment.rb et le placer dans le répertoire config/environments/production.RB.
Cela vous permet de placer ActionMailer::Base.delivery_method = :test
dans config/environments/test.rb et la version que vous voulez dans config/environments/development.RB. J'ai fait le développement.rb :test
comme j'ai rempli ma base de données en utilisant Faker et changé en smtp
donc j'étais sûr que de vrais e-mails ont été envoyés comme un chèque supplémentaire.
Note : vous devez redémarrer votre serveur pour que ces changements prennent effet.
peut-être utile...
Ma config/environment.rb n' pas contenir ActionMailer::Base.delivery_method = :smtp
et ma config/environments/test.rb a contenir ActionMailer::Base.delivery_method = :test
mais les Rails encore livré les expéditeurs lors des tests.
j'ai simplement ajouté ce qui suit à config/environments/test.rb à fixer:
config.action_mailer.perform_deliveries = false
j'ai fait face à la même situation dans Rails4.2 (Intégration ActiveJob avec ActionMailer) même si je n'ai pas écrire delivery_method = :smtp dans config/environment.RB.
dans mon cas, la question en litige en l'espèce est survenue après l'utilisation de" marque " comme travailleur d'arrière-plan. Finalement, j'ai découvert que la configuration suivante était WRONG :
config/initializers / active_job.rb:
Rails.application.config.active_job.queue_adapter = :resque # here is WRONG
...parce qu'il a aussi affecté le mode test.
Donc, j'ai mis "queue_adapter = :resque" seulement dans config/environments/{développement,de la production.RB.} Maintenant, que les œuvres que je pense.