Sha256: 61c9a9a966b78022cdad8e4295cdeabec8e0096910efe076b3c7978a2afa8586

Contents?: true

Size: 1.5 KB

Versions: 108

Compression:

Stored size: 1.5 KB

Contents

# Includes some shared mailer methods for effective_* gem mailers

module EffectiveMailer
  extend ActiveSupport::Concern

  included do
    default from: -> { mailer_settings.mailer_sender }
    layout -> { mailer_settings.mailer_layout }
  end

  protected

  def mailer_admin
    mailer_settings.mailer_admin
  end

  def subject_for(action, subject, resource, opts = {})
    mailer_subject = mailer_settings.mailer_subject

    if mailer_subject.respond_to?(:call)
      subject = self.instance_exec(action, subject, resource, opts, &mailer_subject)
    end

    subject
  end

  def headers_for(resource, opts = {})
    (resource.respond_to?(:log_changes_datatable) ? opts.merge(log: resource) : opts)
  end

  private

  # This returns the top level gem, EffectiveOrders or EffectiveResources
  def mailer_settings
    name = self.class.name.sub('::', '').sub('Mailer', '')

    # If this is in a gem mailer like Effective::OrdersMailer we use constantize
    # Otherwise this could be included in an ApplicationMailer, so we defer to EffectiveResources
    klass = if name.start_with?('Effective')
      name.constantize
    else
      name.safe_constantize || EffectiveResources
    end

    raise('expected mailer settings to respond to mailer_subject') unless klass.respond_to?(:mailer_subject)
    raise('expected mailer settings to respond to mailer_sender') unless klass.respond_to?(:mailer_sender)
    raise('expected mailer settings to respond to mailer_layout') unless klass.respond_to?(:mailer_layout)

    klass
  end

end

Version data entries

108 entries across 108 versions & 1 rubygems

Version Path
effective_resources-2.12.0 app/mailers/concerns/effective_mailer.rb
effective_resources-2.11.6 app/mailers/concerns/effective_mailer.rb
effective_resources-2.11.5 app/mailers/concerns/effective_mailer.rb
effective_resources-2.11.4 app/mailers/concerns/effective_mailer.rb
effective_resources-2.11.3 app/mailers/concerns/effective_mailer.rb
effective_resources-2.11.2 app/mailers/concerns/effective_mailer.rb
effective_resources-2.11.1 app/mailers/concerns/effective_mailer.rb
effective_resources-2.11.0 app/mailers/concerns/effective_mailer.rb
effective_resources-2.10.1 app/mailers/concerns/effective_mailer.rb
effective_resources-2.10.0 app/mailers/concerns/effective_mailer.rb
effective_resources-2.9.7 app/mailers/concerns/effective_mailer.rb
effective_resources-2.9.6 app/mailers/concerns/effective_mailer.rb
effective_resources-2.9.5 app/mailers/concerns/effective_mailer.rb
effective_resources-2.9.4 app/mailers/concerns/effective_mailer.rb
effective_resources-2.9.3 app/mailers/concerns/effective_mailer.rb
effective_resources-2.9.2 app/mailers/concerns/effective_mailer.rb
effective_resources-2.9.1 app/mailers/concerns/effective_mailer.rb
effective_resources-2.9.0 app/mailers/concerns/effective_mailer.rb
effective_resources-2.8.9 app/mailers/concerns/effective_mailer.rb
effective_resources-2.8.8 app/mailers/concerns/effective_mailer.rb