123456789_123456789_123456789_123456789_123456789_

Module: ActionMailer::DeliveryMethods::ClassMethods

Relationships & Source Files
Defined in: actionmailer/lib/action_mailer/delivery_methods.rb

Overview

Helpers for creating and wrapping delivery behavior, used by ::ActionMailer::DeliveryMethods.

Instance Attribute Summary

Instance Method Summary

Instance Attribute Details

#deliveries (rw)

[ GitHub ]

  
# File 'actionmailer/lib/action_mailer/delivery_methods.rb', line 44

delegate :deliveries, :deliveries=, to: Mail::TestMailer

Instance Method Details

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

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

add_delivery_method :sendmail, Mail::Sendmail,
  location:  '/usr/sbin/sendmail',
  arguments: %w[ -i ]
[ GitHub ]

  
# File 'actionmailer/lib/action_mailer/delivery_methods.rb', line 52

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

#wrap_delivery_behavior(mail, method = nil, options = nil)

This method is for internal use only.
[ GitHub ]

  
# File 'actionmailer/lib/action_mailer/delivery_methods.rb', line 58

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

  case method
  when NilClass
    raise "Delivery method cannot be nil"
  when Symbol
    if klass = delivery_methods[method]
      mail.delivery_method(klass, (send(:"#{method}_settings") || {}).merge(options || {}))
    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