From 6fbe9ef2ffb1858027130789246f3ae24a0a182f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 3 Jan 2010 20:39:42 +0100 Subject: Use namespaces in notifications. --- actionmailer/lib/action_mailer/base.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionmailer/lib') diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 0248e29cb7..fb78a01437 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -500,7 +500,7 @@ module ActionMailer #:nodoc: logger.debug "\n#{mail.encoded}" end - ActiveSupport::Notifications.instrument(:deliver_mail, :mail => mail) do + ActiveSupport::Notifications.instrument("actionmailer.deliver", :mail => mail) do begin self.delivery_method.perform_delivery(mail) if perform_deliveries rescue Exception => e # Net::SMTP errors or sendmail pipe errors -- cgit v1.2.3 From 3990310a2bedd0dff5753e3e9b1282e686cff0cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 4 Jan 2010 00:03:56 +0100 Subject: Use underscore in notification namespaces. --- actionmailer/lib/action_mailer/base.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionmailer/lib') diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index fb78a01437..c2ffa5a0e9 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -500,7 +500,7 @@ module ActionMailer #:nodoc: logger.debug "\n#{mail.encoded}" end - ActiveSupport::Notifications.instrument("actionmailer.deliver", :mail => mail) do + ActiveSupport::Notifications.instrument("action_mailer.deliver", :mail => mail) do begin self.delivery_method.perform_delivery(mail) if perform_deliveries rescue Exception => e # Net::SMTP errors or sendmail pipe errors -- cgit v1.2.3 From 2601a16ede92566c651c06942294250ea653bd85 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Mon, 4 Jan 2010 16:22:39 -0600 Subject: Autoload AS test case --- actionmailer/lib/action_mailer/test_case.rb | 3 --- 1 file changed, 3 deletions(-) (limited to 'actionmailer/lib') diff --git a/actionmailer/lib/action_mailer/test_case.rb b/actionmailer/lib/action_mailer/test_case.rb index e8632d4559..318a1e46d1 100644 --- a/actionmailer/lib/action_mailer/test_case.rb +++ b/actionmailer/lib/action_mailer/test_case.rb @@ -1,6 +1,3 @@ -require 'active_support/test_case' -require 'action_mailer/base' - module ActionMailer class NonInferrableMailerError < ::StandardError def initialize(name) -- cgit v1.2.3 From f564f947d94645dca8ff67fc5c2ad161eb2bb187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Thu, 7 Jan 2010 14:20:31 +0100 Subject: Remove duplicated url_for code and move methods shared between ActionMailer and ActionController up to AbstractController. --- actionmailer/lib/action_mailer/base.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'actionmailer/lib') diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index c2ffa5a0e9..e644c47e9c 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -259,10 +259,9 @@ module ActionMailer #:nodoc: include AbstractController::LocalizedCache include AbstractController::Layouts include AbstractController::Helpers + include AbstractController::UrlFor helper ActionMailer::MailHelper - - include ActionController::UrlWriter include ActionMailer::DeprecatedBody private_class_method :new #:nodoc: -- cgit v1.2.3 From 802b08da0075bf6426c723957447ed85dc849bba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 8 Jan 2010 16:15:48 +0100 Subject: Mailer should give self as payload because it contains all the information needed (as the template rendered and the mailer name). --- actionmailer/lib/action_mailer/base.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionmailer/lib') diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index e644c47e9c..597260ab0b 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -499,7 +499,7 @@ module ActionMailer #:nodoc: logger.debug "\n#{mail.encoded}" end - ActiveSupport::Notifications.instrument("action_mailer.deliver", :mail => mail) do + ActiveSupport::Notifications.instrument("action_mailer.deliver", :mail => self) do begin self.delivery_method.perform_delivery(mail) if perform_deliveries rescue Exception => e # Net::SMTP errors or sendmail pipe errors -- cgit v1.2.3 From 2a6bc1263e99060897b53a8c806916d198eab572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 13 Jan 2010 11:56:11 +0100 Subject: Add subscriber to ActionMailer. --- actionmailer/lib/action_mailer/base.rb | 19 ++++++++----------- actionmailer/lib/action_mailer/railtie.rb | 3 +++ .../lib/action_mailer/railties/subscriber.rb | 20 ++++++++++++++++++++ 3 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 actionmailer/lib/action_mailer/railties/subscriber.rb (limited to 'actionmailer/lib') diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 597260ab0b..13c9fbd516 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -399,9 +399,10 @@ module ActionMailer #:nodoc: # end # end def receive(raw_email) - logger.info "Received mail:\n #{raw_email}" unless logger.nil? mail = Mail.new(raw_email) - new.receive(mail) + ActiveSupport::Notifications.instrument("action_mailer.receive", :mail => mail) do + new.receive(mail) + end end # Deliver the given mail object directly. This can be used to deliver @@ -494,17 +495,13 @@ module ActionMailer #:nodoc: def deliver!(mail = @mail) raise "no mail object available for delivery!" unless mail - if logger - logger.info "Sent mail to #{Array(recipients).join(', ')}" - logger.debug "\n#{mail.encoded}" - end - - ActiveSupport::Notifications.instrument("action_mailer.deliver", :mail => self) do - begin + begin + ActiveSupport::Notifications.instrument("action_mailer.deliver", + :mail => @mail, :mailer => self) do self.delivery_method.perform_delivery(mail) if perform_deliveries - rescue Exception => e # Net::SMTP errors or sendmail pipe errors - raise e if raise_delivery_errors end + rescue Exception => e # Net::SMTP errors or sendmail pipe errors + raise e if raise_delivery_errors end mail diff --git a/actionmailer/lib/action_mailer/railtie.rb b/actionmailer/lib/action_mailer/railtie.rb index 5410c7d75f..b05d21ae5d 100644 --- a/actionmailer/lib/action_mailer/railtie.rb +++ b/actionmailer/lib/action_mailer/railtie.rb @@ -5,6 +5,9 @@ module ActionMailer class Railtie < Rails::Railtie plugin_name :action_mailer + require "action_mailer/railties/subscriber" + subscriber ActionMailer::Railties::Subscriber.new + initializer "action_mailer.set_configs" do |app| app.config.action_mailer.each do |k,v| ActionMailer::Base.send "#{k}=", v diff --git a/actionmailer/lib/action_mailer/railties/subscriber.rb b/actionmailer/lib/action_mailer/railties/subscriber.rb new file mode 100644 index 0000000000..aafc155b09 --- /dev/null +++ b/actionmailer/lib/action_mailer/railties/subscriber.rb @@ -0,0 +1,20 @@ +module ActionMailer + module Railties + class Subscriber < Rails::Subscriber + def deliver(event) + recipients = Array(event.payload[:mailer].recipients).join(', ') + info("Sent mail to #{recipients} (%1.fms)" % event.duration) + debug("\n#{event.payload[:mail].encoded}") + end + + def receive(event) + info("Received mail (%.1fms)" % event.duration) + debug("\n#{event.payload[:mail].encoded}") + end + + def logger + ActionMailer::Base.logger + end + end + end +end \ No newline at end of file -- cgit v1.2.3 From 704daad76208f4581c8169e2cdca096ed804beb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 15 Jan 2010 11:24:06 +0100 Subject: Ensure we just send Ruby Stdlib objects in ActionMailer notifications. --- actionmailer/lib/action_mailer/base.rb | 23 ++++++++++++++++++---- .../lib/action_mailer/railties/subscriber.rb | 6 +++--- 2 files changed, 22 insertions(+), 7 deletions(-) (limited to 'actionmailer/lib') diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 13c9fbd516..91a0007084 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -398,9 +398,10 @@ module ActionMailer #:nodoc: # ... # end # end - def receive(raw_email) - mail = Mail.new(raw_email) - ActiveSupport::Notifications.instrument("action_mailer.receive", :mail => mail) do + def receive(raw_mail) + ActiveSupport::Notifications.instrument("action_mailer.receive") do |payload| + mail = Mail.new(raw_mail) + set_payload_for_mail(payload, mail) new.receive(mail) end end @@ -424,7 +425,20 @@ module ActionMailer #:nodoc: self.view_paths = ActionView::Base.process_view_paths(root) end + def set_payload_for_mail(payload, mail) #:nodoc: + payload[:subject] = mail.subject + payload[:to] = mail.to + payload[:from] = mail.from + payload[:bcc] = mail.bcc + payload[:cc] = mail.cc + payload[:reply_to] = mail.reply_to + payload[:date] = mail.date + payload[:body] = mail.body.encoded + payload[:mail] = mail.encoded + end + private + def matches_dynamic_method?(method_name) #:nodoc: method_name = method_name.to_s /^(create|deliver)_([_a-z]\w*)/.match(method_name) || /^(new)$/.match(method_name) @@ -497,7 +511,8 @@ module ActionMailer #:nodoc: begin ActiveSupport::Notifications.instrument("action_mailer.deliver", - :mail => @mail, :mailer => self) do + :template => template, :mailer_name => mailer_name) do |payload| + self.class.set_payload_for_mail(payload, mail) self.delivery_method.perform_delivery(mail) if perform_deliveries end rescue Exception => e # Net::SMTP errors or sendmail pipe errors diff --git a/actionmailer/lib/action_mailer/railties/subscriber.rb b/actionmailer/lib/action_mailer/railties/subscriber.rb index aafc155b09..af9c477237 100644 --- a/actionmailer/lib/action_mailer/railties/subscriber.rb +++ b/actionmailer/lib/action_mailer/railties/subscriber.rb @@ -2,14 +2,14 @@ module ActionMailer module Railties class Subscriber < Rails::Subscriber def deliver(event) - recipients = Array(event.payload[:mailer].recipients).join(', ') + recipients = Array(event.payload[:to]).join(', ') info("Sent mail to #{recipients} (%1.fms)" % event.duration) - debug("\n#{event.payload[:mail].encoded}") + debug("\n#{event.payload[:mail]}") end def receive(event) info("Received mail (%.1fms)" % event.duration) - debug("\n#{event.payload[:mail].encoded}") + debug("\n#{event.payload[:mail]}") end def logger -- cgit v1.2.3 From c905fce35f51b00933ab06725fc3548036caa07c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 15 Jan 2010 13:17:56 +0100 Subject: Add message_id to AM payload and don't send bcc and cc if they were not sent. --- actionmailer/lib/action_mailer/base.rb | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'actionmailer/lib') diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 91a0007084..5b4a8c0751 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -426,15 +426,14 @@ module ActionMailer #:nodoc: end def set_payload_for_mail(payload, mail) #:nodoc: - payload[:subject] = mail.subject - payload[:to] = mail.to - payload[:from] = mail.from - payload[:bcc] = mail.bcc - payload[:cc] = mail.cc - payload[:reply_to] = mail.reply_to - payload[:date] = mail.date - payload[:body] = mail.body.encoded - payload[:mail] = mail.encoded + payload[:message_id] = mail.message_id + payload[:subject] = mail.subject + payload[:to] = mail.to + payload[:from] = mail.from + payload[:bcc] = mail.bcc if mail.bcc.present? + payload[:cc] = mail.cc if mail.cc.present? + payload[:date] = mail.date + payload[:mail] = mail.encoded end private -- cgit v1.2.3 From e5a2a9fced3e5559ac139977922a0f63a53c6c5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 15 Jan 2010 14:45:18 +0100 Subject: Remove URI object from ActiveResource notification, send the :mailer class in AM (like in AP#process_action) and remove locale instrumentation. --- actionmailer/lib/action_mailer/base.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionmailer/lib') diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 5b4a8c0751..b9a01356ba 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -510,7 +510,7 @@ module ActionMailer #:nodoc: begin ActiveSupport::Notifications.instrument("action_mailer.deliver", - :template => template, :mailer_name => mailer_name) do |payload| + :template => template, :mailer => self.class.name) do |payload| self.class.set_payload_for_mail(payload, mail) self.delivery_method.perform_delivery(mail) if perform_deliveries end -- cgit v1.2.3