Module: ActionMailer::DeliveryMethods::ClassMethods

Defined in:
lib/action_mailer/delivery_methods.rb

Instance Method Summary collapse

Instance Method Details

#add_delivery_method(symbol, klass, default_options = {}) ⇒ Object

Adds a new delivery method through the given class using the given symbol as alias and the default options supplied:

Example:

add_delivery_method :sendmail, Mail::Sendmail,
  :location   => '/usr/sbin/sendmail',
  :arguments  => '-i -t'


54
55
56
57
58
# File 'lib/action_mailer/delivery_methods.rb', line 54

def add_delivery_method(symbol, klass, default_options={})
  class_attribute(:"#{symbol}_settings") unless respond_to?(:"#{symbol}_settings")
  send(:"#{symbol}_settings=", default_options)
  self.delivery_methods = delivery_methods.merge(symbol.to_sym => klass).freeze
end

#wrap_delivery_behavior(mail, method = nil) ⇒ Object

:nodoc:



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/action_mailer/delivery_methods.rb', line 60

def wrap_delivery_behavior(mail, method=nil) #:nodoc:
  method ||= self.delivery_method
  mail.delivery_handler = self

  case method
  when NilClass
    raise "Delivery method cannot be nil"
  when Symbol
    if klass = delivery_methods[method.to_sym]
      mail.delivery_method(klass, send(:"#{method}_settings"))
    else
      raise "Invalid delivery method #{method.inspect}"
    end
  else
    mail.delivery_method(method)
  end

  mail.perform_deliveries    = perform_deliveries
  mail.raise_delivery_errors = raise_delivery_errors
end