diff options
author | Yoshiyuki Kinjo <yskkin@gmail.com> | 2018-09-08 17:14:12 +0900 |
---|---|---|
committer | Yoshiyuki Kinjo <yskkin@gmail.com> | 2018-09-08 17:29:28 +0900 |
commit | 383b8bc8e215d5fa2b018d6f0b9c363ea95251cf (patch) | |
tree | 3fed38fc6682c1dcc753d58accb2e543652a2e20 | |
parent | 5f35c60f848dda275e34bc055f58031c08d7b416 (diff) | |
download | rails-383b8bc8e215d5fa2b018d6f0b9c363ea95251cf.tar.gz rails-383b8bc8e215d5fa2b018d6f0b9c363ea95251cf.tar.bz2 rails-383b8bc8e215d5fa2b018d6f0b9c363ea95251cf.zip |
Skip delivery notification when perform_deliveries is false.
-rw-r--r-- | actionmailer/CHANGELOG.md | 4 | ||||
-rw-r--r-- | actionmailer/lib/action_mailer/base.rb | 1 | ||||
-rw-r--r-- | actionmailer/test/log_subscriber_test.rb | 11 | ||||
-rw-r--r-- | actionmailer/test/mailers/base_mailer.rb | 5 | ||||
-rw-r--r-- | guides/source/action_mailer_basics.md | 2 |
5 files changed, 22 insertions, 1 deletions
diff --git a/actionmailer/CHANGELOG.md b/actionmailer/CHANGELOG.md index 1468a89e96..415c54ec70 100644 --- a/actionmailer/CHANGELOG.md +++ b/actionmailer/CHANGELOG.md @@ -1,3 +1,7 @@ +* Skip delivery notification when `perform_deliveries` is false. + + *Yoshiyuki Kinjo* + * Allow call `assert_enqueued_email_with` with no block. Example: diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 7f22af83b0..1ab2c55a6c 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -579,6 +579,7 @@ module ActionMailer # calling +deliver_mail+ directly and passing a <tt>Mail::Message</tt> will do # nothing except tell the logger you sent the email. def deliver_mail(mail) #:nodoc: + return unless mail.perform_deliveries ActiveSupport::Notifications.instrument("deliver.action_mailer") do |payload| set_payload_for_mail(payload, mail) yield # Let Mail do the delivery actions diff --git a/actionmailer/test/log_subscriber_test.rb b/actionmailer/test/log_subscriber_test.rb index 2e89758dfb..48edb80c0c 100644 --- a/actionmailer/test/log_subscriber_test.rb +++ b/actionmailer/test/log_subscriber_test.rb @@ -37,6 +37,17 @@ class AMLogSubscriberTest < ActionMailer::TestCase BaseMailer.deliveries.clear end + def test_deliver_is_not_notified_when_perform_deliveries_is_false + BaseMailer.welcome_without_deliveries.deliver_now + wait + + assert_equal(0, @logger.logged(:info).size) + assert_equal(1, @logger.logged(:debug).size) + assert_match(/BaseMailer#welcome_without_deliveries: processed outbound mail in [\d.]+ms/, @logger.logged(:debug).first) + ensure + BaseMailer.deliveries.clear + end + def test_receive_is_notified fixture = File.read(File.expand_path("fixtures/raw_email", __dir__)) TestMailer.receive(fixture) diff --git a/actionmailer/test/mailers/base_mailer.rb b/actionmailer/test/mailers/base_mailer.rb index bfaecdb658..a3101207dc 100644 --- a/actionmailer/test/mailers/base_mailer.rb +++ b/actionmailer/test/mailers/base_mailer.rb @@ -21,6 +21,11 @@ class BaseMailer < ActionMailer::Base mail(template_name: "welcome", template_path: path) end + def welcome_without_deliveries + mail(template_name: "welcome") + mail.perform_deliveries = false + end + def html_only(hash = {}) mail(hash) end diff --git a/guides/source/action_mailer_basics.md b/guides/source/action_mailer_basics.md index 37cbf3f53d..406615f681 100644 --- a/guides/source/action_mailer_basics.md +++ b/guides/source/action_mailer_basics.md @@ -787,7 +787,7 @@ files (environment.rb, production.rb, etc...) |`sendmail_settings`|Allows you to override options for the `:sendmail` delivery method.<ul><li>`:location` - The location of the sendmail executable. Defaults to `/usr/sbin/sendmail`.</li><li>`:arguments` - The command line arguments to be passed to sendmail. Defaults to `-i`.</li></ul>| |`raise_delivery_errors`|Whether or not errors should be raised if the email fails to be delivered. This only works if the external email server is configured for immediate delivery.| |`delivery_method`|Defines a delivery method. Possible values are:<ul><li>`:smtp` (default), can be configured by using `config.action_mailer.smtp_settings`.</li><li>`:sendmail`, can be configured by using `config.action_mailer.sendmail_settings`.</li><li>`:file`: save emails to files; can be configured by using `config.action_mailer.file_settings`.</li><li>`:test`: save emails to `ActionMailer::Base.deliveries` array.</li></ul>See [API docs](http://api.rubyonrails.org/classes/ActionMailer/Base.html) for more info.| -|`perform_deliveries`|Determines whether deliveries are actually carried out when the `deliver` method is invoked on the Mail message. By default they are, but this can be turned off to help functional testing.| +|`perform_deliveries`|Determines whether deliveries are actually carried out when the `deliver` method is invoked on the Mail message. By default they are, but this can be turned off to help functional testing. If this value is `false`, `deliveries` array will not be populated even if delivery_method is :test.| |`deliveries`|Keeps an array of all the emails sent out through the Action Mailer with delivery_method :test. Most useful for unit and functional testing.| |`default_options`|Allows you to set default values for the `mail` method options (`:from`, `:reply_to`, etc.).| |