Class: ApiMailer::Base
- Inherits:
-
AbstractController::Base
- Object
- AbstractController::Base
- ApiMailer::Base
- Includes:
- AbstractController::Rendering
- Defined in:
- lib/api_mailer/base.rb
Instance Attribute Summary collapse
-
#action_name ⇒ Object
Returns the value of attribute action_name.
-
#headers ⇒ Object
Returns the value of attribute headers.
-
#responses ⇒ Object
Returns the value of attribute responses.
Class Method Summary collapse
- .default(value = nil) ⇒ Object
- .method_missing(method_name, *args) ⇒ Object
- .respond_to?(method, include_private = false) ⇒ Boolean
- .test_deliveries ⇒ Object
Instance Method Summary collapse
- #collect_responses(headers) ⇒ Object
- #deliver ⇒ Object
- #each_template(paths, name, &block) ⇒ Object
-
#initialize(action_name, *args) ⇒ Base
constructor
A new instance of Base.
- #mail(headers = {}) ⇒ Object
- #process(method_name, *args) ⇒ Object
- #templates_path(headers) ⇒ Object
Constructor Details
#initialize(action_name, *args) ⇒ Base
Returns a new instance of Base.
39 40 41 42 43 |
# File 'lib/api_mailer/base.rb', line 39 def initialize(action_name, *args) self.action_name = action_name self.responses = [] process(action_name, *args) end |
Instance Attribute Details
#action_name ⇒ Object
Returns the value of attribute action_name.
8 9 10 |
# File 'lib/api_mailer/base.rb', line 8 def action_name @action_name end |
#headers ⇒ Object
Returns the value of attribute headers.
10 11 12 |
# File 'lib/api_mailer/base.rb', line 10 def headers @headers end |
#responses ⇒ Object
Returns the value of attribute responses.
9 10 11 |
# File 'lib/api_mailer/base.rb', line 9 def responses @responses end |
Class Method Details
.default(value = nil) ⇒ Object
34 35 36 37 |
# File 'lib/api_mailer/base.rb', line 34 def self.default(value = nil) self.default_params = default_params.merge(value).freeze if value default_params end |
.method_missing(method_name, *args) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/api_mailer/base.rb', line 16 def self.method_missing(method_name, *args) if respond_to?(method_name) new(method_name, *args) else super end end |
.respond_to?(method, include_private = false) ⇒ Boolean
28 29 30 |
# File 'lib/api_mailer/base.rb', line 28 def self.respond_to?(method, include_private = false) super || action_methods.include?(method.to_s) end |
.test_deliveries ⇒ Object
24 25 26 |
# File 'lib/api_mailer/base.rb', line 24 def self.test_deliveries @test_deliveries ||= [] end |
Instance Method Details
#collect_responses(headers) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/api_mailer/base.rb', line 66 def collect_responses(headers) templates_name = headers.delete(:template_name) || action_name each_template(templates_path(headers), templates_name) do |template| self.formats = template.formats self.responses << { body: render(template: template), content_type: template.type.to_s } end end |
#deliver ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/api_mailer/base.rb', line 58 def deliver if Rails.env.test? self.class.test_deliveries << else () end end |
#each_template(paths, name, &block) ⇒ Object
83 84 85 86 87 88 89 90 |
# File 'lib/api_mailer/base.rb', line 83 def each_template(paths, name, &block) templates = lookup_context.find_all(name, paths) if templates.empty? raise ActionView::MissingTemplate.new(paths, name, paths, false, 'mailer') else templates.uniq { |t| t.formats }.each(&block) end end |
#mail(headers = {}) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/api_mailer/base.rb', line 45 def mail(headers={}) # Call all the procs (if any) default_values = {} self.class.default.each do |k,v| default_values[k] = v.is_a?(Proc) ? instance_eval(&v) : v end # Handle defaults self.headers = ActiveSupport::HashWithIndifferentAccess.new(headers.reverse_merge(default_values)) collect_responses(headers) end |
#process(method_name, *args) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/api_mailer/base.rb', line 99 def process(method_name, *args) payload = { :mailer => self.class.name, :action => method_name } ActiveSupport::Notifications.instrument("process.api_mailer", payload) do lookup_context.skip_default_locale! super end end |
#templates_path(headers) ⇒ Object
79 80 81 |
# File 'lib/api_mailer/base.rb', line 79 def templates_path(headers) [headers.delete(:template_path) || self.class.name.underscore] end |