aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/lib/action_mailer/queued_message.rb
diff options
context:
space:
mode:
authorSantiago Pastorino <santiago@wyeworks.com>2012-09-10 12:52:19 -0700
committerSantiago Pastorino <santiago@wyeworks.com>2012-09-11 15:11:52 -0700
commit34b23e7110a3a13cf157608cefc9b5701017bf39 (patch)
tree1b4f9962bddde61a8f7239b8a49b06e4c04f3429 /actionmailer/lib/action_mailer/queued_message.rb
parentb4b5971ff73f3191be03644fa0c9951a930717d2 (diff)
downloadrails-34b23e7110a3a13cf157608cefc9b5701017bf39.tar.gz
rails-34b23e7110a3a13cf157608cefc9b5701017bf39.tar.bz2
rails-34b23e7110a3a13cf157608cefc9b5701017bf39.zip
Action Mailer async flag is true by default using a Synchronous impl
Diffstat (limited to 'actionmailer/lib/action_mailer/queued_message.rb')
-rw-r--r--actionmailer/lib/action_mailer/queued_message.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/actionmailer/lib/action_mailer/queued_message.rb b/actionmailer/lib/action_mailer/queued_message.rb
new file mode 100644
index 0000000000..e5868ab43b
--- /dev/null
+++ b/actionmailer/lib/action_mailer/queued_message.rb
@@ -0,0 +1,27 @@
+require 'delegate'
+
+module ActionMailer
+ class QueuedMessage < ::Delegator
+ attr_reader :queue
+
+ def initialize(queue, mailer_class, method_name, *args)
+ @queue = queue
+ @mailer_class = mailer_class
+ @method_name = method_name
+ @args = args
+ end
+
+ def __getobj__
+ @actual_message ||= @mailer_class.send(:new, @method_name, *@args).message
+ end
+
+ def run
+ __getobj__.deliver
+ end
+
+ # Will push the message onto the Queue to be processed
+ def deliver
+ @queue << self
+ end
+ end
+end