module Moist::ActionMailer::Extension

Constants

MOIST_VARS

Public Class Methods

included(klass) click to toggle source
# File lib/moist/action_mailer/extension.rb, line 5
def self.included(klass)
  klass.extend ClassMethods
  klass.after_action :attach_metadata
end

Private Instance Methods

attach_metadata() click to toggle source
# File lib/moist/action_mailer/extension.rb, line 12
def attach_metadata
  mailer_class = self.class.to_s
  mailer_action = self.action_name
  self.message.instance_variable_set(:@mailer_class, mailer_class)
  self.message.instance_variable_set(:@mailer_action, mailer_action)
  self.message.class.send(:attr_reader, :mailer_class)
  self.message.class.send(:attr_reader, :mailer_action)

  MOIST_VARS.each do |var|
    if instance_variable_defined?(var)
      self.message.instance_variable_set(var, instance_variable_get(var))
      self.message.class.send(:attr_reader, var.to_s[1..].to_sym)
    end
  end
end