From 67f8b6b2bc7e7eca8723996b1303c3fafa5ed39b Mon Sep 17 00:00:00 2001 From: Abdelkader Boudih Date: Tue, 12 Aug 2014 18:24:19 +0000 Subject: Added ActionMailer::DeliverLater --- actionmailer/lib/action_mailer.rb | 1 + actionmailer/lib/action_mailer/base.rb | 6 +- actionmailer/lib/action_mailer/deliver_later.rb | 9 +++ .../lib/action_mailer/deliver_later/job.rb | 11 +++ .../deliver_later/mail_message_wrapper.rb | 46 ++++++++++++ actionmailer/test/deliver_later_test.rb | 82 ++++++++++++++++++++++ actionmailer/test/mailers/delayed_mailer.rb | 6 ++ 7 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 actionmailer/lib/action_mailer/deliver_later.rb create mode 100644 actionmailer/lib/action_mailer/deliver_later/job.rb create mode 100644 actionmailer/lib/action_mailer/deliver_later/mail_message_wrapper.rb create mode 100644 actionmailer/test/deliver_later_test.rb create mode 100644 actionmailer/test/mailers/delayed_mailer.rb (limited to 'actionmailer') diff --git a/actionmailer/lib/action_mailer.rb b/actionmailer/lib/action_mailer.rb index 83969d4074..49a380419f 100644 --- a/actionmailer/lib/action_mailer.rb +++ b/actionmailer/lib/action_mailer.rb @@ -45,4 +45,5 @@ module ActionMailer autoload :Previews, 'action_mailer/preview' autoload :TestCase autoload :TestHelper + autoload :DeliverLater end diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index bc540aece0..df0c945434 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -549,7 +549,11 @@ module ActionMailer def method_missing(method_name, *args) # :nodoc: if respond_to?(method_name) - new(method_name, *args).message + if defined?(::ActiveJob) && action_methods.include?(method_name.to_s) + DeliverLater::MailMessageWrapper.new(self, method_name, *args) + else + new(method_name, *args).message + end else super end diff --git a/actionmailer/lib/action_mailer/deliver_later.rb b/actionmailer/lib/action_mailer/deliver_later.rb new file mode 100644 index 0000000000..5609e35d01 --- /dev/null +++ b/actionmailer/lib/action_mailer/deliver_later.rb @@ -0,0 +1,9 @@ +require 'active_job' + +module ActionMailer + module DeliverLater + extend ActiveSupport::Autoload + autoload :Job + autoload :MailMessageWrapper + end +end \ No newline at end of file diff --git a/actionmailer/lib/action_mailer/deliver_later/job.rb b/actionmailer/lib/action_mailer/deliver_later/job.rb new file mode 100644 index 0000000000..fda3b626b2 --- /dev/null +++ b/actionmailer/lib/action_mailer/deliver_later/job.rb @@ -0,0 +1,11 @@ +module ActionMailer + module DeliverLater + class Job < ActiveJob::Base + queue_as :mailers + + def perform(mailer, mail_method, delivery_method, *args) + mailer.constantize.send(mail_method, *args).send(delivery_method) + end + end + end +end diff --git a/actionmailer/lib/action_mailer/deliver_later/mail_message_wrapper.rb b/actionmailer/lib/action_mailer/deliver_later/mail_message_wrapper.rb new file mode 100644 index 0000000000..5c0a5304d4 --- /dev/null +++ b/actionmailer/lib/action_mailer/deliver_later/mail_message_wrapper.rb @@ -0,0 +1,46 @@ +module ActionMailer + module DeliverLater + class MailMessageWrapper < Delegator + def initialize(mailer, mail_method, *args) + @mailer = mailer + @mail_method = mail_method + @args = args + __getobj__ + end + + def __getobj__ + @obj ||= @mailer.send(:new, @mail_method, *@args).message + end + + def __setobj__(obj) + @obj = obj + end + + def deliver_later!(options={}) + enqueue_delivery :deliver!, options + end + + def deliver_later(options={}) + enqueue_delivery :deliver, options + end + + def method_missing(m, *args, &block) + __getobj__.__send__(m, *args, &block) + end + + private + def enqueue_delivery(delivery_method, options={}) + args = @mailer.name, @mail_method.to_s, delivery_method.to_s, *@args + enqueue_method = :enqueue + if options[:at] + enqueue_method = :enqueue_at + args.unshift options[:at] + elsif options[:in] + enqueue_method = :enqueue_in + args.unshift options[:in] + end + ActionMailer::DeliverLater::Job.send enqueue_method, *args + end + end + end +end diff --git a/actionmailer/test/deliver_later_test.rb b/actionmailer/test/deliver_later_test.rb new file mode 100644 index 0000000000..829c96872f --- /dev/null +++ b/actionmailer/test/deliver_later_test.rb @@ -0,0 +1,82 @@ +# encoding: utf-8 +gem 'activejob' +require 'action_mailer/deliver_later' +require 'abstract_unit' +require 'minitest/mock' +require_relative 'mailers/delayed_mailer' + +class MailerTest < ActiveSupport::TestCase + + setup do + @previous_logger = ActiveJob::Base.logger + @previous_delivery_method = ActionMailer::Base.delivery_method + ActionMailer::Base.delivery_method = :test + ActiveJob::Base.logger = Logger.new('/dev/null') + @mail = DelayedMailer.test_message(1, 2, 3) + ActionMailer::Base.deliveries.clear + end + + teardown do + ActiveJob::Base.logger = @previous_logger + ActionMailer::Base.delivery_method = @previous_delivery_method + end + + test 'should be a MailMessageWrapper' do + assert_equal @mail.class, ActionMailer::DeliverLater::MailMessageWrapper + end + + test 'its object should be a Mail::Message' do + assert_equal @mail.__getobj__.class, Mail::Message + end + + test 'should respond to .deliver' do + assert_respond_to @mail, :deliver + end + + test 'should respond to .deliver!' do + assert_respond_to @mail, :deliver! + end + + test 'should respond to .deliver_later' do + assert_respond_to @mail, :deliver_later + end + + test 'should respond to .deliver_later!' do + assert_respond_to @mail, :deliver_later! + end + + test 'should enqueue and run correctly in activejob' do + @mail.deliver_later! + assert_equal ActionMailer::Base.deliveries.size, 1 + end + + test 'should enqueue the email with :deliver delivery method' do + ret = ActionMailer::DeliverLater::Job.stub :enqueue, ->(*args){ args } do + @mail.deliver_later + end + assert_equal ret, ["DelayedMailer", "test_message", "deliver", 1, 2, 3] + end + + test 'should enqueue the email with :deliver! delivery method' do + ret = ActionMailer::DeliverLater::Job.stub :enqueue, ->(*args){ args } do + @mail.deliver_later! + end + assert_equal ret, ["DelayedMailer", "test_message", "deliver!", 1, 2, 3] + end + + test 'should enqueue a delivery with a delay' do + ret = ActionMailer::DeliverLater::Job.stub :enqueue_in, ->(*args){ args } do + @mail.deliver_later in: 600 + end + assert_equal ret, [600, "DelayedMailer", "test_message", "deliver", 1, 2, 3] + end + + test 'should enqueue a delivery at a specific time' do + later_time = Time.now.to_i + 3600 + ret = ActionMailer::DeliverLater::Job.stub :enqueue_at, ->(*args){ args } do + @mail.deliver_later at: later_time + end + assert_equal ret, [later_time, "DelayedMailer", "test_message", "deliver", 1, 2, 3] + end + +end diff --git a/actionmailer/test/mailers/delayed_mailer.rb b/actionmailer/test/mailers/delayed_mailer.rb new file mode 100644 index 0000000000..62d4baa434 --- /dev/null +++ b/actionmailer/test/mailers/delayed_mailer.rb @@ -0,0 +1,6 @@ +class DelayedMailer < ActionMailer::Base + + def test_message(*) + mail(from: 'test-sender@test.com', to: 'test-receiver@test.com', subject: 'Test Subject', body: 'Test Body') + end +end -- cgit v1.2.3 From b937ea893e5ad22f53a244ac17d085c1d40fdcc2 Mon Sep 17 00:00:00 2001 From: Abdelkader Boudih Date: Thu, 14 Aug 2014 10:50:46 +0000 Subject: Make ActionMailer::Previews methods class methods. --- actionmailer/CHANGELOG.md | 6 ++++++ actionmailer/lib/action_mailer/preview.rb | 2 ++ 2 files changed, 8 insertions(+) (limited to 'actionmailer') diff --git a/actionmailer/CHANGELOG.md b/actionmailer/CHANGELOG.md index ab93745f60..451270bae3 100644 --- a/actionmailer/CHANGELOG.md +++ b/actionmailer/CHANGELOG.md @@ -1,3 +1,9 @@ +* Make ActionMailer::Previews methods class methods. Previously they were + instance methods and ActionMailer tries to render a message when they + are called. + + *Cristian Bica* + * Deprecate `*_path` helpers in email views. When used they generate non-working links and are not the intention of most developers. Instead we recommend to use `*_url` helper. diff --git a/actionmailer/lib/action_mailer/preview.rb b/actionmailer/lib/action_mailer/preview.rb index 33de1dc049..44cf6665ba 100644 --- a/actionmailer/lib/action_mailer/preview.rb +++ b/actionmailer/lib/action_mailer/preview.rb @@ -22,7 +22,9 @@ module ActionMailer # :nodoc: mattr_accessor :preview_interceptors, instance_writer: false self.preview_interceptors = [] + end + module ClassMethods # Register one or more Interceptors which will be called before mail is previewed. def register_preview_interceptors(*interceptors) interceptors.flatten.compact.each { |interceptor| register_preview_interceptor(interceptor) } -- cgit v1.2.3 From 18303f6e82258c1d6175f1faf1becd260397fb57 Mon Sep 17 00:00:00 2001 From: Abdelkader Boudih Date: Wed, 13 Aug 2014 21:50:38 +0000 Subject: Refactor DeliverLater into MessageDelivery --- actionmailer/lib/action_mailer.rb | 3 +- actionmailer/lib/action_mailer/base.rb | 8 +-- .../lib/action_mailer/delayed_delivery_job.rb | 11 +++ actionmailer/lib/action_mailer/deliver_later.rb | 9 --- .../lib/action_mailer/deliver_later/job.rb | 11 --- .../deliver_later/mail_message_wrapper.rb | 46 ------------ actionmailer/lib/action_mailer/message_delivery.rb | 47 +++++++++++++ actionmailer/test/base_test.rb | 5 +- actionmailer/test/deliver_later_test.rb | 82 ---------------------- actionmailer/test/message_delivery_test.rb | 82 ++++++++++++++++++++++ 10 files changed, 147 insertions(+), 157 deletions(-) create mode 100644 actionmailer/lib/action_mailer/delayed_delivery_job.rb delete mode 100644 actionmailer/lib/action_mailer/deliver_later.rb delete mode 100644 actionmailer/lib/action_mailer/deliver_later/job.rb delete mode 100644 actionmailer/lib/action_mailer/deliver_later/mail_message_wrapper.rb create mode 100644 actionmailer/lib/action_mailer/message_delivery.rb delete mode 100644 actionmailer/test/deliver_later_test.rb create mode 100644 actionmailer/test/message_delivery_test.rb (limited to 'actionmailer') diff --git a/actionmailer/lib/action_mailer.rb b/actionmailer/lib/action_mailer.rb index 49a380419f..1add881054 100644 --- a/actionmailer/lib/action_mailer.rb +++ b/actionmailer/lib/action_mailer.rb @@ -45,5 +45,6 @@ module ActionMailer autoload :Previews, 'action_mailer/preview' autoload :TestCase autoload :TestHelper - autoload :DeliverLater + autoload :MessageDelivery + autoload :DelayedDeliveryJob end diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index df0c945434..3c144c8e5c 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -548,12 +548,8 @@ module ActionMailer end def method_missing(method_name, *args) # :nodoc: - if respond_to?(method_name) - if defined?(::ActiveJob) && action_methods.include?(method_name.to_s) - DeliverLater::MailMessageWrapper.new(self, method_name, *args) - else - new(method_name, *args).message - end + if action_methods.include?(method_name.to_s) + MessageDelivery.new(self, method_name, *args) else super end diff --git a/actionmailer/lib/action_mailer/delayed_delivery_job.rb b/actionmailer/lib/action_mailer/delayed_delivery_job.rb new file mode 100644 index 0000000000..159198829f --- /dev/null +++ b/actionmailer/lib/action_mailer/delayed_delivery_job.rb @@ -0,0 +1,11 @@ +require 'active_job' + +module ActionMailer + class DelayedDeliveryJob < ActiveJob::Base + queue_as :mailers + + def perform(mailer, mail_method, delivery_method, *args) + mailer.constantize.send(mail_method, *args).send(delivery_method) + end + end +end diff --git a/actionmailer/lib/action_mailer/deliver_later.rb b/actionmailer/lib/action_mailer/deliver_later.rb deleted file mode 100644 index 5609e35d01..0000000000 --- a/actionmailer/lib/action_mailer/deliver_later.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'active_job' - -module ActionMailer - module DeliverLater - extend ActiveSupport::Autoload - autoload :Job - autoload :MailMessageWrapper - end -end \ No newline at end of file diff --git a/actionmailer/lib/action_mailer/deliver_later/job.rb b/actionmailer/lib/action_mailer/deliver_later/job.rb deleted file mode 100644 index fda3b626b2..0000000000 --- a/actionmailer/lib/action_mailer/deliver_later/job.rb +++ /dev/null @@ -1,11 +0,0 @@ -module ActionMailer - module DeliverLater - class Job < ActiveJob::Base - queue_as :mailers - - def perform(mailer, mail_method, delivery_method, *args) - mailer.constantize.send(mail_method, *args).send(delivery_method) - end - end - end -end diff --git a/actionmailer/lib/action_mailer/deliver_later/mail_message_wrapper.rb b/actionmailer/lib/action_mailer/deliver_later/mail_message_wrapper.rb deleted file mode 100644 index 5c0a5304d4..0000000000 --- a/actionmailer/lib/action_mailer/deliver_later/mail_message_wrapper.rb +++ /dev/null @@ -1,46 +0,0 @@ -module ActionMailer - module DeliverLater - class MailMessageWrapper < Delegator - def initialize(mailer, mail_method, *args) - @mailer = mailer - @mail_method = mail_method - @args = args - __getobj__ - end - - def __getobj__ - @obj ||= @mailer.send(:new, @mail_method, *@args).message - end - - def __setobj__(obj) - @obj = obj - end - - def deliver_later!(options={}) - enqueue_delivery :deliver!, options - end - - def deliver_later(options={}) - enqueue_delivery :deliver, options - end - - def method_missing(m, *args, &block) - __getobj__.__send__(m, *args, &block) - end - - private - def enqueue_delivery(delivery_method, options={}) - args = @mailer.name, @mail_method.to_s, delivery_method.to_s, *@args - enqueue_method = :enqueue - if options[:at] - enqueue_method = :enqueue_at - args.unshift options[:at] - elsif options[:in] - enqueue_method = :enqueue_in - args.unshift options[:in] - end - ActionMailer::DeliverLater::Job.send enqueue_method, *args - end - end - end -end diff --git a/actionmailer/lib/action_mailer/message_delivery.rb b/actionmailer/lib/action_mailer/message_delivery.rb new file mode 100644 index 0000000000..fa0aa43a2d --- /dev/null +++ b/actionmailer/lib/action_mailer/message_delivery.rb @@ -0,0 +1,47 @@ +module ActionMailer + class MessageDelivery < Delegator + def initialize(mailer, mail_method, *args) + @mailer = mailer + @mail_method = mail_method + @args = args + end + + def __getobj__ + @obj ||= @mailer.send(:new, @mail_method, *@args).message + end + + def __setobj__(obj) + @obj = obj + end + + def message #:nodoc: + __getobj__ + end + + def deliver_later!(options={}) + enqueue_delivery :deliver!, options + end + + def deliver_later(options={}) + enqueue_delivery :deliver, options + end + + def method_missing(m, *args, &block) + __getobj__.__send__(m, *args, &block) + end + + private + def enqueue_delivery(delivery_method, options={}) + args = @mailer.name, @mail_method.to_s, delivery_method.to_s, *@args + enqueue_method = :enqueue + if options[:at] + enqueue_method = :enqueue_at + args.unshift options[:at] + elsif options[:in] + enqueue_method = :enqueue_in + args.unshift options[:in] + end + ActionMailer::DelayedDeliveryJob.send enqueue_method, *args + end + end +end diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb index fd5f4e2831..c17e59f746 100644 --- a/actionmailer/test/base_test.rb +++ b/actionmailer/test/base_test.rb @@ -4,6 +4,7 @@ require 'set' require 'action_dispatch' require 'active_support/time' +require 'active_support/core_ext/object/itself' require 'mailers/base_mailer' require 'mailers/proc_mailer' @@ -243,7 +244,7 @@ class BaseTest < ActiveSupport::TestCase end end - e = assert_raises(RuntimeError) { LateAttachmentMailer.welcome } + e = assert_raises(RuntimeError) { LateAttachmentMailer.welcome.message } assert_match(/Can't add attachments after `mail` was called./, e.message) end @@ -255,7 +256,7 @@ class BaseTest < ActiveSupport::TestCase end end - e = assert_raises(RuntimeError) { LateInlineAttachmentMailer.welcome } + e = assert_raises(RuntimeError) { LateInlineAttachmentMailer.welcome.message } assert_match(/Can't add attachments after `mail` was called./, e.message) end diff --git a/actionmailer/test/deliver_later_test.rb b/actionmailer/test/deliver_later_test.rb deleted file mode 100644 index 829c96872f..0000000000 --- a/actionmailer/test/deliver_later_test.rb +++ /dev/null @@ -1,82 +0,0 @@ -# encoding: utf-8 -gem 'activejob' -require 'action_mailer/deliver_later' -require 'abstract_unit' -require 'minitest/mock' -require_relative 'mailers/delayed_mailer' - -class MailerTest < ActiveSupport::TestCase - - setup do - @previous_logger = ActiveJob::Base.logger - @previous_delivery_method = ActionMailer::Base.delivery_method - ActionMailer::Base.delivery_method = :test - ActiveJob::Base.logger = Logger.new('/dev/null') - @mail = DelayedMailer.test_message(1, 2, 3) - ActionMailer::Base.deliveries.clear - end - - teardown do - ActiveJob::Base.logger = @previous_logger - ActionMailer::Base.delivery_method = @previous_delivery_method - end - - test 'should be a MailMessageWrapper' do - assert_equal @mail.class, ActionMailer::DeliverLater::MailMessageWrapper - end - - test 'its object should be a Mail::Message' do - assert_equal @mail.__getobj__.class, Mail::Message - end - - test 'should respond to .deliver' do - assert_respond_to @mail, :deliver - end - - test 'should respond to .deliver!' do - assert_respond_to @mail, :deliver! - end - - test 'should respond to .deliver_later' do - assert_respond_to @mail, :deliver_later - end - - test 'should respond to .deliver_later!' do - assert_respond_to @mail, :deliver_later! - end - - test 'should enqueue and run correctly in activejob' do - @mail.deliver_later! - assert_equal ActionMailer::Base.deliveries.size, 1 - end - - test 'should enqueue the email with :deliver delivery method' do - ret = ActionMailer::DeliverLater::Job.stub :enqueue, ->(*args){ args } do - @mail.deliver_later - end - assert_equal ret, ["DelayedMailer", "test_message", "deliver", 1, 2, 3] - end - - test 'should enqueue the email with :deliver! delivery method' do - ret = ActionMailer::DeliverLater::Job.stub :enqueue, ->(*args){ args } do - @mail.deliver_later! - end - assert_equal ret, ["DelayedMailer", "test_message", "deliver!", 1, 2, 3] - end - - test 'should enqueue a delivery with a delay' do - ret = ActionMailer::DeliverLater::Job.stub :enqueue_in, ->(*args){ args } do - @mail.deliver_later in: 600 - end - assert_equal ret, [600, "DelayedMailer", "test_message", "deliver", 1, 2, 3] - end - - test 'should enqueue a delivery at a specific time' do - later_time = Time.now.to_i + 3600 - ret = ActionMailer::DeliverLater::Job.stub :enqueue_at, ->(*args){ args } do - @mail.deliver_later at: later_time - end - assert_equal ret, [later_time, "DelayedMailer", "test_message", "deliver", 1, 2, 3] - end - -end diff --git a/actionmailer/test/message_delivery_test.rb b/actionmailer/test/message_delivery_test.rb new file mode 100644 index 0000000000..6ad9b099a3 --- /dev/null +++ b/actionmailer/test/message_delivery_test.rb @@ -0,0 +1,82 @@ +# encoding: utf-8 +gem 'activejob' +require 'active_job' +require 'abstract_unit' +require 'minitest/mock' +require_relative 'mailers/delayed_mailer' + +class MessageDeliveryTest < ActiveSupport::TestCase + + setup do + @previous_logger = ActiveJob::Base.logger + @previous_delivery_method = ActionMailer::Base.delivery_method + ActionMailer::Base.delivery_method = :test + ActiveJob::Base.logger = Logger.new('/dev/null') + @mail = DelayedMailer.test_message(1, 2, 3) + ActionMailer::Base.deliveries.clear + end + + teardown do + ActiveJob::Base.logger = @previous_logger + ActionMailer::Base.delivery_method = @previous_delivery_method + end + + test 'should be a MessageDelivery' do + assert_equal @mail.class, ActionMailer::MessageDelivery + end + + test 'its object should be a Mail::Message' do + assert_equal @mail.__getobj__.class, Mail::Message + end + + test 'should respond to .deliver' do + assert_respond_to @mail, :deliver + end + + test 'should respond to .deliver!' do + assert_respond_to @mail, :deliver! + end + + test 'should respond to .deliver_later' do + assert_respond_to @mail, :deliver_later + end + + test 'should respond to .deliver_later!' do + assert_respond_to @mail, :deliver_later! + end + + test 'should enqueue and run correctly in activejob' do + @mail.deliver_later! + assert_equal ActionMailer::Base.deliveries.size, 1 + end + + test 'should enqueue the email with :deliver delivery method' do + ret = ActionMailer::DelayedDeliveryJob.stub :enqueue, ->(*args){ args } do + @mail.deliver_later + end + assert_equal ret, ["DelayedMailer", "test_message", "deliver", 1, 2, 3] + end + + test 'should enqueue the email with :deliver! delivery method' do + ret = ActionMailer::DelayedDeliveryJob.stub :enqueue, ->(*args){ args } do + @mail.deliver_later! + end + assert_equal ret, ["DelayedMailer", "test_message", "deliver!", 1, 2, 3] + end + + test 'should enqueue a delivery with a delay' do + ret = ActionMailer::DelayedDeliveryJob.stub :enqueue_in, ->(*args){ args } do + @mail.deliver_later in: 600 + end + assert_equal ret, [600, "DelayedMailer", "test_message", "deliver", 1, 2, 3] + end + + test 'should enqueue a delivery at a specific time' do + later_time = Time.now.to_i + 3600 + ret = ActionMailer::DelayedDeliveryJob.stub :enqueue_at, ->(*args){ args } do + @mail.deliver_later at: later_time + end + assert_equal ret, [later_time, "DelayedMailer", "test_message", "deliver", 1, 2, 3] + end + +end -- cgit v1.2.3 From e034ac33ea923cb068644a0fae4a8a8e7ed9dc2f Mon Sep 17 00:00:00 2001 From: Cristian Bica Date: Fri, 15 Aug 2014 23:20:55 +0300 Subject: Removed method missing from ActionMailer::MessageDelivery --- actionmailer/lib/action_mailer/base.rb | 4 ++++ actionmailer/lib/action_mailer/message_delivery.rb | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'actionmailer') diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 3c144c8e5c..a229d9142c 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -586,6 +586,10 @@ module ActionMailer class NullMail #:nodoc: def body; '' end + def respond_to?(string, include_all=false) + true + end + def method_missing(*args) nil end diff --git a/actionmailer/lib/action_mailer/message_delivery.rb b/actionmailer/lib/action_mailer/message_delivery.rb index fa0aa43a2d..27e0671427 100644 --- a/actionmailer/lib/action_mailer/message_delivery.rb +++ b/actionmailer/lib/action_mailer/message_delivery.rb @@ -26,10 +26,6 @@ module ActionMailer enqueue_delivery :deliver, options end - def method_missing(m, *args, &block) - __getobj__.__send__(m, *args, &block) - end - private def enqueue_delivery(delivery_method, options={}) args = @mailer.name, @mail_method.to_s, delivery_method.to_s, *@args -- cgit v1.2.3 From 0e4e496a5775adf4d9204aaa38de916f74623ea9 Mon Sep 17 00:00:00 2001 From: Cristian Bica Date: Sat, 16 Aug 2014 00:30:20 +0300 Subject: Fixed indentation --- actionmailer/lib/action_mailer/base.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionmailer') diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index a229d9142c..9aae14ec8c 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -549,7 +549,7 @@ module ActionMailer def method_missing(method_name, *args) # :nodoc: if action_methods.include?(method_name.to_s) - MessageDelivery.new(self, method_name, *args) + MessageDelivery.new(self, method_name, *args) else super end -- cgit v1.2.3 From 6a2ca149fda46c8a36d80e0f95affb1b6de11aae Mon Sep 17 00:00:00 2001 From: Abdelkader Boudih Date: Thu, 14 Aug 2014 23:33:40 +0000 Subject: [ActiveJob] Fix test syntax --- actionmailer/test/message_delivery_test.rb | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'actionmailer') diff --git a/actionmailer/test/message_delivery_test.rb b/actionmailer/test/message_delivery_test.rb index 6ad9b099a3..49958081f5 100644 --- a/actionmailer/test/message_delivery_test.rb +++ b/actionmailer/test/message_delivery_test.rb @@ -11,7 +11,7 @@ class MessageDeliveryTest < ActiveSupport::TestCase @previous_logger = ActiveJob::Base.logger @previous_delivery_method = ActionMailer::Base.delivery_method ActionMailer::Base.delivery_method = :test - ActiveJob::Base.logger = Logger.new('/dev/null') + ActiveJob::Base.logger = Logger.new(nil) @mail = DelayedMailer.test_message(1, 2, 3) ActionMailer::Base.deliveries.clear end @@ -21,12 +21,12 @@ class MessageDeliveryTest < ActiveSupport::TestCase ActionMailer::Base.delivery_method = @previous_delivery_method end - test 'should be a MessageDelivery' do - assert_equal @mail.class, ActionMailer::MessageDelivery + test 'should have a message' do + assert @mail.message end - test 'its object should be a Mail::Message' do - assert_equal @mail.__getobj__.class, Mail::Message + test 'its message should be a Mail::Message' do + assert_equal Mail::Message , @mail.message.class end test 'should respond to .deliver' do @@ -47,28 +47,28 @@ class MessageDeliveryTest < ActiveSupport::TestCase test 'should enqueue and run correctly in activejob' do @mail.deliver_later! - assert_equal ActionMailer::Base.deliveries.size, 1 + assert_equal 1 , ActionMailer::Base.deliveries.size end test 'should enqueue the email with :deliver delivery method' do ret = ActionMailer::DelayedDeliveryJob.stub :enqueue, ->(*args){ args } do @mail.deliver_later end - assert_equal ret, ["DelayedMailer", "test_message", "deliver", 1, 2, 3] + assert_equal ['DelayedMailer', 'test_message', 'deliver', 1, 2, 3], ret end test 'should enqueue the email with :deliver! delivery method' do ret = ActionMailer::DelayedDeliveryJob.stub :enqueue, ->(*args){ args } do @mail.deliver_later! end - assert_equal ret, ["DelayedMailer", "test_message", "deliver!", 1, 2, 3] + assert_equal ['DelayedMailer', 'test_message', 'deliver!', 1, 2, 3], ret end test 'should enqueue a delivery with a delay' do ret = ActionMailer::DelayedDeliveryJob.stub :enqueue_in, ->(*args){ args } do @mail.deliver_later in: 600 end - assert_equal ret, [600, "DelayedMailer", "test_message", "deliver", 1, 2, 3] + assert_equal [600, 'DelayedMailer', 'test_message', 'deliver', 1, 2, 3], ret end test 'should enqueue a delivery at a specific time' do @@ -76,7 +76,7 @@ class MessageDeliveryTest < ActiveSupport::TestCase ret = ActionMailer::DelayedDeliveryJob.stub :enqueue_at, ->(*args){ args } do @mail.deliver_later at: later_time end - assert_equal ret, [later_time, "DelayedMailer", "test_message", "deliver", 1, 2, 3] + assert_equal [later_time, 'DelayedMailer', 'test_message', 'deliver', 1, 2, 3], ret end end -- cgit v1.2.3 From 299d1f262629aaa25e070db6ae15438e95137054 Mon Sep 17 00:00:00 2001 From: Abdelkader Boudih Date: Thu, 14 Aug 2014 23:47:38 +0000 Subject: [ActionMailer] Rename ActionMailer::DelayedDeliveryJob to ActionMailer::DeliveryJob --- actionmailer/lib/action_mailer.rb | 2 +- actionmailer/lib/action_mailer/delayed_delivery_job.rb | 11 ----------- actionmailer/lib/action_mailer/delivery_job.rb | 11 +++++++++++ actionmailer/lib/action_mailer/message_delivery.rb | 4 +++- actionmailer/test/message_delivery_test.rb | 8 ++++---- 5 files changed, 19 insertions(+), 17 deletions(-) delete mode 100644 actionmailer/lib/action_mailer/delayed_delivery_job.rb create mode 100644 actionmailer/lib/action_mailer/delivery_job.rb (limited to 'actionmailer') diff --git a/actionmailer/lib/action_mailer.rb b/actionmailer/lib/action_mailer.rb index 1add881054..b994ef3182 100644 --- a/actionmailer/lib/action_mailer.rb +++ b/actionmailer/lib/action_mailer.rb @@ -46,5 +46,5 @@ module ActionMailer autoload :TestCase autoload :TestHelper autoload :MessageDelivery - autoload :DelayedDeliveryJob + autoload :DeliveryJob end diff --git a/actionmailer/lib/action_mailer/delayed_delivery_job.rb b/actionmailer/lib/action_mailer/delayed_delivery_job.rb deleted file mode 100644 index 159198829f..0000000000 --- a/actionmailer/lib/action_mailer/delayed_delivery_job.rb +++ /dev/null @@ -1,11 +0,0 @@ -require 'active_job' - -module ActionMailer - class DelayedDeliveryJob < ActiveJob::Base - queue_as :mailers - - def perform(mailer, mail_method, delivery_method, *args) - mailer.constantize.send(mail_method, *args).send(delivery_method) - end - end -end diff --git a/actionmailer/lib/action_mailer/delivery_job.rb b/actionmailer/lib/action_mailer/delivery_job.rb new file mode 100644 index 0000000000..b2cfa245fd --- /dev/null +++ b/actionmailer/lib/action_mailer/delivery_job.rb @@ -0,0 +1,11 @@ +require 'active_job' + +module ActionMailer + class DeliveryJob < ActiveJob::Base + queue_as :mailers + + def perform(mailer, mail_method, delivery_method, *args) + mailer.constantize.public_send(mail_method, *args).send(delivery_method) + end + end +end diff --git a/actionmailer/lib/action_mailer/message_delivery.rb b/actionmailer/lib/action_mailer/message_delivery.rb index 27e0671427..80a0517bff 100644 --- a/actionmailer/lib/action_mailer/message_delivery.rb +++ b/actionmailer/lib/action_mailer/message_delivery.rb @@ -1,3 +1,5 @@ +require 'delegate' + module ActionMailer class MessageDelivery < Delegator def initialize(mailer, mail_method, *args) @@ -37,7 +39,7 @@ module ActionMailer enqueue_method = :enqueue_in args.unshift options[:in] end - ActionMailer::DelayedDeliveryJob.send enqueue_method, *args + ActionMailer::DeliveryJob.send enqueue_method, *args end end end diff --git a/actionmailer/test/message_delivery_test.rb b/actionmailer/test/message_delivery_test.rb index 49958081f5..a097d0e84d 100644 --- a/actionmailer/test/message_delivery_test.rb +++ b/actionmailer/test/message_delivery_test.rb @@ -51,21 +51,21 @@ class MessageDeliveryTest < ActiveSupport::TestCase end test 'should enqueue the email with :deliver delivery method' do - ret = ActionMailer::DelayedDeliveryJob.stub :enqueue, ->(*args){ args } do + ret = ActionMailer::DeliveryJob.stub :enqueue, ->(*args){ args } do @mail.deliver_later end assert_equal ['DelayedMailer', 'test_message', 'deliver', 1, 2, 3], ret end test 'should enqueue the email with :deliver! delivery method' do - ret = ActionMailer::DelayedDeliveryJob.stub :enqueue, ->(*args){ args } do + ret = ActionMailer::DeliveryJob.stub :enqueue, ->(*args){ args } do @mail.deliver_later! end assert_equal ['DelayedMailer', 'test_message', 'deliver!', 1, 2, 3], ret end test 'should enqueue a delivery with a delay' do - ret = ActionMailer::DelayedDeliveryJob.stub :enqueue_in, ->(*args){ args } do + ret = ActionMailer::DeliveryJob.stub :enqueue_in, ->(*args){ args } do @mail.deliver_later in: 600 end assert_equal [600, 'DelayedMailer', 'test_message', 'deliver', 1, 2, 3], ret @@ -73,7 +73,7 @@ class MessageDeliveryTest < ActiveSupport::TestCase test 'should enqueue a delivery at a specific time' do later_time = Time.now.to_i + 3600 - ret = ActionMailer::DelayedDeliveryJob.stub :enqueue_at, ->(*args){ args } do + ret = ActionMailer::DeliveryJob.stub :enqueue_at, ->(*args){ args } do @mail.deliver_later at: later_time end assert_equal [later_time, 'DelayedMailer', 'test_message', 'deliver', 1, 2, 3], ret -- cgit v1.2.3 From 2f7b239fca6630e49ba8ad9df6fc7db25e1080f0 Mon Sep 17 00:00:00 2001 From: Abdelkader Boudih Date: Sun, 17 Aug 2014 01:06:30 +0000 Subject: [ActiveJob] Use globalid gem --- actionmailer/test/base_test.rb | 1 - 1 file changed, 1 deletion(-) (limited to 'actionmailer') diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb index c17e59f746..fc24639bf4 100644 --- a/actionmailer/test/base_test.rb +++ b/actionmailer/test/base_test.rb @@ -4,7 +4,6 @@ require 'set' require 'action_dispatch' require 'active_support/time' -require 'active_support/core_ext/object/itself' require 'mailers/base_mailer' require 'mailers/proc_mailer' -- cgit v1.2.3