Class: Peng::Engine
- Inherits:
-
Object
- Object
- Peng::Engine
- Defined in:
- lib/peng/engine.rb
Constant Summary collapse
- DEFAULT_CHANNELS =
{ email: Peng::Channels::Email }
Instance Method Summary collapse
- #deliver(config) ⇒ Object
-
#initialize(data = {}) ⇒ Engine
constructor
A new instance of Engine.
Constructor Details
#initialize(data = {}) ⇒ Engine
Returns a new instance of Engine.
7 8 9 |
# File 'lib/peng/engine.rb', line 7 def initialize(data={}) @data = data end |
Instance Method Details
#deliver(config) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/peng/engine.rb', line 11 def deliver(config) name_or_klass = config[:channel] || :mail channel_klass = name_or_klass.is_a?(Symbol) ? DEFAULT_CHANNELS[name_or_klass] : name_or_klass from = config[:from] if config[:to].is_a?(String) to = config[:to] else address_method_name = config[:address_method_name].presence || channel_klass.address_method_name to = config[:to].public_send(address_method_name) @data[:recipient] ||= config[:to] end if config[:subject].present? subject = Mustache.render(config[:subject], @data) end if config[:body].present? body = Mustache.render(config[:body], @data) end = {to: to, from: from, subject: subject, body: body} async = config.has_key?(:async) ? config[:async] : true async ? channel_klass.inline() : channel_klass.async() end |