Class: SimpleEmailPreview::Preview

Inherits:
Object
  • Object
show all
Defined in:
app/models/simple_email_preview/preview.rb

Overview

Preview for one mailer method

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attr = {}) ⇒ Preview



6
7
8
# File 'app/models/simple_email_preview/preview.rb', line 6

def initialize(attr = {})
  attr.each { |k, v| send "#{k}=", v }
end

Class Attribute Details

.allObject (readonly)

Returns the value of attribute all.



49
50
51
# File 'app/models/simple_email_preview/preview.rb', line 49

def all
  @all
end

Instance Attribute Details

#idObject

Returns the value of attribute id.



4
5
6
# File 'app/models/simple_email_preview/preview.rb', line 4

def id
  @id
end

#preview_class_nameObject

Returns the value of attribute preview_class_name.



4
5
6
# File 'app/models/simple_email_preview/preview.rb', line 4

def preview_class_name
  @preview_class_name
end

#preview_methodObject

Returns the value of attribute preview_method.



4
5
6
# File 'app/models/simple_email_preview/preview.rb', line 4

def preview_method
  @preview_method
end

Class Method Details

.find(email_id) ⇒ Object Also known as: []



43
44
45
# File 'app/models/simple_email_preview/preview.rb', line 43

def find(email_id)
  @by_id[email_id]
end

.load_all(class_names) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'app/models/simple_email_preview/preview.rb', line 55

def load_all(class_names)
  @all   = []
  @by_id = {}
  class_names.each do |preview_class_name|
    preview_class = preview_class_name.constantize

    mail_methods(preview_class).sort.each do |preview_method|
      mailer_method = preview_method
      id            = "#{preview_class_name.underscore.gsub('/', '__')}-#{mailer_method}"

      email = new(
        id:                 id,
        preview_class_name: preview_class_name,
        preview_method:     preview_method
      )
      @all << email
      @by_id[id] = email
    end
  end
  @all.sort_by!(&:name)
end

.mail_methods(mailer) ⇒ Object



51
52
53
# File 'app/models/simple_email_preview/preview.rb', line 51

def mail_methods(mailer)
  mailer.public_instance_methods(false).map(&:to_s)
end

Instance Method Details

#formatsObject



14
15
16
# File 'app/models/simple_email_preview/preview.rb', line 14

def formats
  %w[plain raw]
end

#group_nameObject



38
39
40
# File 'app/models/simple_email_preview/preview.rb', line 38

def group_name
  @group_name ||= preview_class_name.to_s.underscore.gsub('/', ': ').sub(/(_mailer)?_preview$/, '').humanize
end

#humanized_method_nameObject Also known as: method_name



31
32
33
# File 'app/models/simple_email_preview/preview.rb', line 31

def humanized_method_name
  @action_name ||= preview_method.to_s.humanize
end

#localesObject



10
11
12
# File 'app/models/simple_email_preview/preview.rb', line 10

def locales
  I18n.available_locales
end

#nameObject



27
28
29
# File 'app/models/simple_email_preview/preview.rb', line 27

def name
  @name ||= "#{group_name}: #{humanized_method_name}"
end

#preview_mail(run_hooks = false, search_query_params = {}) ⇒ Object



18
19
20
21
22
23
24
25
# File 'app/models/simple_email_preview/preview.rb', line 18

def preview_mail(run_hooks = false, search_query_params = {})
  preview_instance = preview_class_name.constantize.new
  setup_instance_variables(preview_instance, search_query_params)

  preview_instance.send(preview_method).tap do |mail|
    SimpleEmailPreview.run_before_render(mail, self) if run_hooks
  end
end