module Mailtime::ActionMailer::Metadata
Public Class Methods
included(base)
click to toggle source
# File lib/mailtime/action_mailer/base.rb, line 5 def self.included(base) base.include AbstractController::Callbacks base.after_action :inject_metadata end
Protected Instance Methods
instance_variables_map()
click to toggle source
# File lib/mailtime/action_mailer/base.rb, line 12 def instance_variables_map self.instance_variables.select { |variable| !variable.to_s.start_with?("@_") }.each_with_object({}) do |v, h| h[v.to_s.gsub('@', '')] = instance_variable_get(v) end end
Private Instance Methods
find_mailtime_templates()
click to toggle source
# File lib/mailtime/action_mailer/base.rb, line 46 def find_mailtime_templates Mailtime::MailTemplateCollection.new(self) end
inject_metadata()
click to toggle source
inject some stuff. to avoid a mostly useless service object, add the mailtime_template and mailtime_layout
# File lib/mailtime/action_mailer/base.rb, line 22 def inject_metadata mailer_klass = self.class.to_s mailer_action = self.action_name action_variables = self.instance_variables_map self.message.instance_variable_set(:@mailer_klass, mailer_klass) self.message.class.send(:attr_reader, :mailer_klass) self.message.instance_variable_set(:@mailer_action, mailer_action) self.message.class.send(:attr_reader, :mailer_action) self.message.instance_variable_set(:@action_variables, action_variables) self.message.class.send(:attr_reader, :action_variables) self.message.instance_variable_set(:@template_path, self.headers[:template_path] || mailer_klass) self.message.class.send(:attr_reader, :template_path) self.message.instance_variable_set(:@template_name, self.headers[:template_name] || mailer_action) self.message.class.send(:attr_reader, :template_name) self.message.instance_variable_set(:@mailtime_templates, find_mailtime_templates) self.message.class.send(:attr_accessor, :mailtime_templates) end