class MandrillQueue::Mailer

Constants

ACCESSORS

Public Class Methods

action_methods() click to toggle source
# File lib/mandrill_queue/mailer.rb, line 13
def action_methods
        klass = self
        klass = klass.superclass until klass == MandrillQueue::Mailer
        return [] if self == klass
        self.public_instance_methods(true) -
                klass.public_instance_methods(true)
end
all_templates() click to toggle source
# File lib/mandrill_queue/mailer.rb, line 67
def all_templates
        action_methods.map do |method|
                template_from_method(method)
        end
end
configuration() click to toggle source
# File lib/mandrill_queue/mailer.rb, line 33
def configuration
        MandrillQueue.configuration
end
defaults(&block) click to toggle source
# File lib/mandrill_queue/mailer.rb, line 37
def defaults(&block)
        return @_defaults ||= {} unless block_given?

        mailer = new
        @_in_defaults = true
        mailer.instance_eval(&block)
        @_defaults = mailer.to_hash
ensure
        @_in_defaults = false
end
defaults=(hash) click to toggle source
# File lib/mandrill_queue/mailer.rb, line 48
def defaults=(hash)
        @_defaults = hash
end
message_defaults() click to toggle source
# File lib/mandrill_queue/mailer.rb, line 52
def message_defaults
        md = configuration.message_defaults || {}
        md.merge!(defaults[:message]) unless @_in_defaults || defaults[:message].nil?
        md
end
method_missing(method, *args) click to toggle source
Calls superclass method
# File lib/mandrill_queue/mailer.rb, line 21
def method_missing(method, *args)
        if respond_to?(method)
                mailer = new(defaults)
                mailer.send(method, *args)
                mailer.template(template_from_method(method)) if mailer.template.blank? &&
                        !mailer.message.content_message?
                mailer
        else
                super
        end
end
new(values = nil) click to toggle source
# File lib/mandrill_queue/mailer.rb, line 82
          def initialize(values = nil)
                  set!(values) unless values.nil?
@_adapter_options = self.class.configuration.adapter_options || {}
          end
respond_to?(method, include_private = false) click to toggle source
Calls superclass method
# File lib/mandrill_queue/mailer.rb, line 9
def respond_to?(method, include_private = false)
        super || action_methods.include?(method)
end
template_prefix(*args) click to toggle source
# File lib/mandrill_queue/mailer.rb, line 58
def template_prefix(*args)
        @template_prefix = args.first unless args.count == 0
        if @template_prefix.nil?
                "#{self.name.chomp('Mailer').sluggify}-"
        else
                @template_prefix
        end
end

Private Class Methods

template_from_method(method) click to toggle source
# File lib/mandrill_queue/mailer.rb, line 74
def template_from_method(method)
        template = defaults[:template].blank? ? method.to_s.sluggify : defaults[:template]
        template_prefix + template
end

Public Instance Methods

adapter_options(options = nil) click to toggle source
# File lib/mandrill_queue/mailer.rb, line 140
def adapter_options(options = nil)
  @_adapter_options.merge!(options) unless options.nil?
  @_adapter_options ||= {}
end
deliver(options = {}) click to toggle source
# File lib/mandrill_queue/mailer.rb, line 135
          def deliver(options = {})
                  validate!
MandrillQueue.adapter.enqueue_to(queue, worker_class, adapter_options.merge(options), to_hash)
          end
message(&block) click to toggle source
# File lib/mandrill_queue/mailer.rb, line 96
def message(&block)
        @_message ||= Message::Internal.new(self.class.message_defaults)
        @_message.dsl(&block) if block_given?
        block_given? ? self : @_message
end
queue() click to toggle source
# File lib/mandrill_queue/mailer.rb, line 121
def queue
        @_queue ||= \

        if instance_variable_defined?(:@queue)
                instance_variable_get(:@queue)
        elsif worker_class.instance_variable_defined?(:@queue)
                worker_class.instance_variable_get(:@queue)
        elsif worker_class.respond_to?(:queue)
                worker_class.queue
        else
                self.class.configuration.default_queue || :mailer
        end
end
reset!() click to toggle source
# File lib/mandrill_queue/mailer.rb, line 87
def reset!
        ACCESSORS.each do |key|
                instance_variable_set("@#{key}", nil)
        end
        @_message = nil
        @_content = nil
        self
end
set!(hash) click to toggle source
# File lib/mandrill_queue/mailer.rb, line 157
def set!(hash)
        hash.symbolize_keys!
        ACCESSORS.each do |key|
                instance_variable_set("@#{key}", hash[key])
        end

        message.set!(hash[:message]) unless hash[:message].nil?
        content.set!(hash[:content]) unless hash[:content].nil?
        self
end
to_hash(options = {}) click to toggle source
# File lib/mandrill_queue/mailer.rb, line 145
          def to_hash(options = {})
                  hash = {}
                  ACCESSORS.each do |key|
                          value = instance_variable_get("@#{key}".to_sym)
                          hash[key] = value if options[:include_nil] || !value.nil?
                  end

                  hash[:message] = message.to_hash(options) rescue nil if !@_message.nil? || options[:include_nils]
                  hash[:content] = content.to_key_value_array(options) rescue nil if !@_content.nil? || options[:include_nils]
hash
          end
use_defaults!() click to toggle source
# File lib/mandrill_queue/mailer.rb, line 170
def use_defaults!
        set!(self.class.defaults) unless self.class.defaults.nil?
        self
end
validate!() click to toggle source
# File lib/mandrill_queue/mailer.rb, line 175
def validate!
        errors = []
        message.validate(errors) unless @_message.nil?

        raise MandrillValidationError.new(errors) unless errors.empty?
        self
end
worker_class() click to toggle source
# File lib/mandrill_queue/mailer.rb, line 117
def worker_class
        self.class.configuration.default_worker_class || ::MandrillQueue::Worker
end