Sha256: 352c8d4206b3f0d3692ce5faaf9721a02cf6228210b9ef3c4c3e4c3163818848
Contents?: true
Size: 1.7 KB
Versions: 1
Compression:
Stored size: 1.7 KB
Contents
# frozen_string_literal: true require 'monkey_mail/mail' module MonkeyMail class Mailer PERMITTED_PARAM_KYES = %i[subject from_name from_email to vars template_name skip_delivery].freeze attr_reader :action_name class << self private def method_missing(method, *args) super unless respond_to_missing?(method) new(method).public_send(method, *args) end def respond_to_missing?(method, include_all = false) public_instance_methods(false).include?(method) || super end end def initialize(action_name) @action_name = action_name end def mail(params = {}) params[:template_name] = template_name(params) result_params = MonkeyMail.configuration.default_mail_parameters.dup result_params.merge!(vars: vars_from_instance_variables) result_params.merge!(params) result_params[:to] = [params[:to]] if params[:to].is_a? String result_params = permitted_params(result_params) Mail.new(result_params) end private def template_name(params) template_name ||= params[:template_name] || action_name template_name = "#{template_name}_#{params[:locale]}" if params[:locale] template_name end def permitted_params(params) params.slice(*PERMITTED_PARAM_KYES) end 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 def permitted_instance_variables instance_variables - %i[@action_name] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
monkey-mail-0.1.0 | lib/monkey_mail/mailer.rb |