aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2015-10-30 14:53:05 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2015-10-30 14:53:19 -0700
commite76c38ef1047ad3ffb25c1c639c38432a9228796 (patch)
tree207b7e10addd34d8c44f5d3d53ce3c3a65762ad2 /actionmailer
parentd2315d0c3b1ede89b7cce6a77c647285359243c5 (diff)
downloadrails-e76c38ef1047ad3ffb25c1c639c38432a9228796.tar.gz
rails-e76c38ef1047ad3ffb25c1c639c38432a9228796.tar.bz2
rails-e76c38ef1047ad3ffb25c1c639c38432a9228796.zip
split `process` from mailer instantiation
this allows us to construct mailer objects without possibly disastrous side-effects.
Diffstat (limited to 'actionmailer')
-rw-r--r--actionmailer/lib/action_mailer/base.rb5
-rw-r--r--actionmailer/lib/action_mailer/message_delivery.rb6
2 files changed, 6 insertions, 5 deletions
diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb
index c9e7f7d0d3..cbd7cec70f 100644
--- a/actionmailer/lib/action_mailer/base.rb
+++ b/actionmailer/lib/action_mailer/base.rb
@@ -441,8 +441,6 @@ module ActionMailer
helper ActionMailer::MailHelper
- private_class_method :new #:nodoc:
-
class_attribute :default_params
self.default_params = {
mime_version: "1.0",
@@ -580,11 +578,10 @@ module ActionMailer
# will be initialized according to the named method. If not, the mailer will
# remain uninitialized (useful when you only need to invoke the "receive"
# method, for instance).
- def initialize(method_name=nil, *args)
+ def initialize
super()
@_mail_was_called = false
@_message = Mail.new
- process(method_name, *args) if method_name
end
def process(method_name, *args) #:nodoc:
diff --git a/actionmailer/lib/action_mailer/message_delivery.rb b/actionmailer/lib/action_mailer/message_delivery.rb
index 622d481113..5fcb5a0c88 100644
--- a/actionmailer/lib/action_mailer/message_delivery.rb
+++ b/actionmailer/lib/action_mailer/message_delivery.rb
@@ -21,7 +21,11 @@ module ActionMailer
end
def __getobj__ #:nodoc:
- @obj ||= @mailer.send(:new, @mail_method, *@args).message
+ @obj ||= begin
+ mailer = @mailer.new
+ mailer.process @mail_method, *@args
+ mailer.message
+ end
end
def __setobj__(obj) #:nodoc: