diff options
author | Brian Cardarella <bcardarella@gmail.com> | 2012-06-23 23:42:03 -0400 |
---|---|---|
committer | Brian Cardarella <bcardarella@gmail.com> | 2012-06-23 23:42:03 -0400 |
commit | 812d1e88c5218d4075878559476eaad65df1b761 (patch) | |
tree | d0c48e151eebb3727724cedbdefa271351d47b10 /actionmailer/lib | |
parent | dee0b23af22516f52892fbf6af635fc7d1689a0e (diff) | |
download | rails-812d1e88c5218d4075878559476eaad65df1b761.tar.gz rails-812d1e88c5218d4075878559476eaad65df1b761.tar.bz2 rails-812d1e88c5218d4075878559476eaad65df1b761.zip |
Support for custom queues on the mailer
Credit goes to *Aaron Patterson* (tenderlove)
Diffstat (limited to 'actionmailer/lib')
-rw-r--r-- | actionmailer/lib/action_mailer/async.rb | 25 | ||||
-rw-r--r-- | actionmailer/lib/action_mailer/base.rb | 2 |
2 files changed, 14 insertions, 13 deletions
diff --git a/actionmailer/lib/action_mailer/async.rb b/actionmailer/lib/action_mailer/async.rb index 6fcc94d50e..d7c34c1a7b 100644 --- a/actionmailer/lib/action_mailer/async.rb +++ b/actionmailer/lib/action_mailer/async.rb @@ -1,22 +1,23 @@ require 'delegate' module ActionMailer::Async - def self.included(base) - base.extend(ClassMethods) + def method_missing(method_name, *args) + if action_methods.include?(method_name.to_s) + QueuedMessage.new(queue, self, method_name, *args) + else + super + end end - module ClassMethods - def method_missing(method_name, *args) - if action_methods.include?(method_name.to_s) - QueuedMessage.new(self, method_name, *args) - else - super - end - end + def queue + Rails.queue end class QueuedMessage < ::Delegator - def initialize(mailer_class, method_name, *args) + attr_reader :queue + + def initialize(queue, mailer_class, method_name, *args) + @queue = queue @mailer_class = mailer_class @method_name = method_name @args = args @@ -37,7 +38,7 @@ module ActionMailer::Async if force run else - Rails.queue << self + @queue << self end end end diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 5686e78dfc..1f6c00ce11 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -460,7 +460,7 @@ module ActionMailer #:nodoc: def async=(truth) if truth require 'action_mailer/async' - include ActionMailer::Async + extend ActionMailer::Async end end |