aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/lib/action_mailer/async.rb
diff options
context:
space:
mode:
authorBrian Cardarella <bcardarella@gmail.com>2012-06-23 23:42:03 -0400
committerBrian Cardarella <bcardarella@gmail.com>2012-06-23 23:42:03 -0400
commit812d1e88c5218d4075878559476eaad65df1b761 (patch)
treed0c48e151eebb3727724cedbdefa271351d47b10 /actionmailer/lib/action_mailer/async.rb
parentdee0b23af22516f52892fbf6af635fc7d1689a0e (diff)
downloadrails-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/action_mailer/async.rb')
-rw-r--r--actionmailer/lib/action_mailer/async.rb25
1 files changed, 13 insertions, 12 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