class PaperPlane::FlightRoutes::Base
Attributes
context[RW]
recipient[RW]
Public Class Methods
fly(mid, context, **args)
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 24 def self.fly(mid, context, **args) new.fly(mid, context, **args) end
inherited(subklass)
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 10 def self.inherited(subklass) subklass.class_eval do extend PaperPlane::FlightRoutes::ClassMethods default_views 'app/paper_planes' end end
new(route_name = nil)
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 19 def initialize(route_name = nil) @_route_name = route_name || _default_route_name @_engine = _default_engine end
Public Instance Methods
do_fly()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 47 def do_fly raise DoFlyUndefined, 'Please override :do_fly in your flight route.' end
fly(mid, context, **args)
click to toggle source
to be overriden by children
# File lib/paper_plane/flight_routes/base.rb, line 29 def fly(mid, context, **args) @method = mid @args = args @context = context _extract_recipient _extract_template_formats _extract_paper_plane_name begin do_fly rescue NoTemplateError _logger.debug "'#{route_name}' skipped for lack of suited template => path: '#{_template_file_path}'; extension: #{_template_formats}." else _logger.debug "#{route_name} sent!" end end
Private Instance Methods
_base_template_name()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 155 def _base_template_name [action, route_name].join('/') end
_default_engine()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 171 def _default_engine self.class._default_engine end
_default_route_name()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 187 def _default_route_name self.class.to_s.underscore.split('/').last end
_default_template_format()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 175 def _default_template_format self.class._default_template_format end
_default_views_folder()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 179 def _default_views_folder Rails.root.join(self.class._default_views_folder) end
_extract_paper_plane_name()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 123 def _extract_paper_plane_name @_paper_plane_name = @context.dig(:@paper_plane_name) end
_extract_recipient()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 127 def _extract_recipient unless @context.key?(:@recipient) raise NoRecipientError, 'please specify the recipient value by setting @to = recipient' end @recipient = @context.dig(:@recipient) end
_extract_template_formats()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 119 def _extract_template_formats @_template_formats = @context.dig(:@template_formats) end
_full_template_folder_path()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 159 def _full_template_folder_path Rails.root.join(_default_views_folder, _template_folder) end
_localized_file_path()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 147 def _localized_file_path File.join(_full_template_folder_path, _localized_template_name) end
_localized_template_exists?()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 195 def _localized_template_exists? !Dir.glob([_localized_file_path, '*.*'].join).empty? end
_localized_template_name()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 151 def _localized_template_name [_base_template_name, '.', locale].join end
_logger()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 87 def _logger @_logger ||= Logger.new(STDOUT) end
_lookup_context()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 95 def _lookup_context @_lookup_context ||= ActionView::LookupContext.new(_view_resolver) end
_paper_plane_templates_path()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 183 def _paper_plane_templates_path @_paper_plane_name.underscore end
_render_payload()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 79 def _render_payload [ _view_context, template: _template_file_path, locals: _template_locals ] end
_renderer()
click to toggle source
def _output_buffer
@_output_buffer ||= ActionView::OutputBuffer.new
end
# File lib/paper_plane/flight_routes/base.rb, line 111 def _renderer @_renderer ||= ActionView::Renderer.new(_lookup_context) end
_template_exists?()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 191 def _template_exists? !Dir.glob([_template_full_file_path, '*.*'].join).empty? end
_template_file_path()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 135 def _template_file_path [_template_folder, _template_name].join('/') end
_template_folder()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 163 def _template_folder _paper_plane_templates_path end
_template_formats()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 115 def _template_formats @_template_formats = %i[text] end
_template_full_file_path()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 167 def _template_full_file_path File.join(_full_template_folder_path, _template_name) end
_template_locals()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 91 def _template_locals context end
_template_name()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 139 def _template_name if _localized_template_exists? _localized_template_name else _base_template_name end end
_view_context()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 103 def _view_context @_view_context ||= ActionView::Base.new(_lookup_context) end
_view_resolver()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 99 def _view_resolver @_view_resolver ||= ActionView::FileSystemResolver.new(_default_views_folder) end
action()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 61 def action @method.to_s end
contextualize()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 53 def contextualize context.each do |variable, value| next unless variable.to_s.starts_with? '@' instance_variable_set(variable, value) end end
locale()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 75 def locale @locale || @recipient.locale || I18n.locale end
route_name()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 65 def route_name @_route_name.to_s end
template()
click to toggle source
# File lib/paper_plane/flight_routes/base.rb, line 69 def template return _renderer.render(*_render_payload) if _template_exists? raise NoTemplateError, "Could not find template for '#{_template_file_path}' with extension: #{_template_formats}" end