lib/qc-mailer/message_decoy.rb
require "queue_classic"
module QC
module Mailer
class MessageDecoy
delegate :to_s, :to => :actual_message
def initialize(mailer_class, method_name, *args)
@mailer_class = mailer_class
@method_name = method_name.to_s
*@args = *args
end
def actual_message
@actual_message ||= @mailer_class.send(:new, @method_name, *@args).message
end
def deliver
@mailer_class.queue.enqueue("#{@mailer_class}.deliver", @method_name, *@args)
end
def deliver!
actual_message.deliver
end
def method_missing(method_name, *args)
actual_message.send(method_name, *args)
end
end
end
end