class Drill::Mailer

Attributes

action_name[R]

Public Class Methods

new(action_name) click to toggle source
# File lib/drill/mailer.rb, line 24
def initialize(action_name)
  @action_name = action_name
end

Private Class Methods

method_missing(method, *args) click to toggle source
Calls superclass method
# File lib/drill/mailer.rb, line 13
def method_missing(method, *args)
  super unless respond_to_missing?(method)

  new(method).public_send(method, *args)
end
respond_to_missing?(method, include_all = false) click to toggle source
Calls superclass method
# File lib/drill/mailer.rb, line 19
def respond_to_missing?(method, include_all = false)
  public_instance_methods(false).include?(method) || super
end

Public Instance Methods

mail(params = {}) click to toggle source
# File lib/drill/mailer.rb, line 28
def mail(params = {})
  params[:template_name] ||= action_name

  params = Params.new(permitted_params(params))
  params.merge_vars(vars_from_instance_variables)
  params.merge_vars(Drill.configuration.default_vars)

  Mail.new(params)
end

Private Instance Methods

permitted_instance_variables() click to toggle source
# File lib/drill/mailer.rb, line 54
def permitted_instance_variables
  instance_variables - %i[@action_name]
end
permitted_params(params) click to toggle source
# File lib/drill/mailer.rb, line 40
def permitted_params(params)
  params.slice(*Params.members)
end
vars_from_instance_variables() click to toggle source
# File lib/drill/mailer.rb, line 44
def vars_from_instance_variables
  permitted_instance_variables
    .each.with_object({}) do |instance_variable, vars|
      name = instance_variable.to_s.sub('@', '').to_sym
      content = instance_variable_get(instance_variable)

      vars[name] = content
    end
end