Module: SmsCarrier::DeliveryMethods::ClassMethods
- Defined in:
- lib/sms_carrier/delivery_methods.rb
Overview
Helpers for creating and wrapping delivery behavior, used by DeliveryMethods.
Instance Method Summary collapse
-
#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.
-
#wrap_delivery_behavior(sms, method = nil, options = nil) ⇒ Object
:nodoc:.
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.
35 36 37 38 39 |
# File 'lib/sms_carrier/delivery_methods.rb', line 35 def add_delivery_method(symbol, klass, = {}) class_attribute(:"#{symbol}_settings") unless respond_to?(:"#{symbol}_settings") send(:"#{symbol}_settings=", ) self.delivery_methods = delivery_methods.merge(symbol.to_sym => klass).freeze end |
#wrap_delivery_behavior(sms, method = nil, options = nil) ⇒ Object
:nodoc:
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/sms_carrier/delivery_methods.rb', line 41 def wrap_delivery_behavior(sms, method = nil, = nil) # :nodoc: method ||= delivery_method sms.delivery_handler = self case method when NilClass raise "Delivery method cannot be nil" when Symbol if klass = delivery_methods[method] sms.delivery_method(klass, (send(:"#{method}_settings") || {}).merge( || {})) else raise "Invalid delivery method #{method.inspect}" end else sms.delivery_method(method) end sms.perform_deliveries = perform_deliveries sms.raise_delivery_errors = raise_delivery_errors end |