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
- #deliveries rw
Instance Method Summary
-
#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.
- #wrap_delivery_behavior(mail, method = nil, options = nil) Internal use only
Instance Attribute Details
#deliveries (rw)
[ GitHub ]# File 'actionmailer/lib/action_mailer/delivery_methods.rb', line 43
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 ]
# File 'actionmailer/lib/action_mailer/delivery_methods.rb', line 51
def add_delivery_method(symbol, klass, = {}) class_attribute(:"#{symbol}_settings") unless respond_to?(:"#{symbol}_settings") public_send(:"#{symbol}_settings=", ) 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 57
def wrap_delivery_behavior(mail, method = nil, = 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( || {})) 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