class ApiMailer::Base
Attributes
action_name[RW]
headers[RW]
responses[RW]
Public Class Methods
default(value = nil)
click to toggle source
# File lib/api_mailer/base.rb, line 41 def self.default(value = nil) self.default_params = default_params.merge(value).freeze if value default_params end
method_missing(method_name, *args)
click to toggle source
Calls superclass method
# File lib/api_mailer/base.rb, line 23 def self.method_missing(method_name, *args) if respond_to?(method_name) new(method_name, *args) else super end end
new(action_name, *args)
click to toggle source
# File lib/api_mailer/base.rb, line 46 def initialize(action_name, *args) self.action_name = action_name self.responses = [] process(action_name, *args) end
respond_to?(method, include_private = false)
click to toggle source
Calls superclass method
# File lib/api_mailer/base.rb, line 35 def self.respond_to?(method, include_private = false) super || action_methods.include?(method.to_s) end
test_deliveries()
click to toggle source
# File lib/api_mailer/base.rb, line 31 def self.test_deliveries @test_deliveries ||= [] end
Public Instance Methods
collect_responses(headers) { |collector| ... }
click to toggle source
# File lib/api_mailer/base.rb, line 73 def collect_responses(headers) if block_given? collector = ActionMailer::Collector.new(lookup_context) { render(action_name) } yield(collector) self.responses = collector.responses else templates_name = headers.delete(:template_name) || action_name each_template(templates_path(headers), templates_name) do |template| self.formats = template.respond_to?(:formats) ? template.formats : [template.format] self.responses << { body: render(template: template), content_type: (template.respond_to?(:type) ? template.type : template.mime_type).to_s } end end end
deliver()
click to toggle source
# File lib/api_mailer/base.rb, line 65 def deliver if Rails.env.test? self.class.test_deliveries << build_message else deliver_message(build_message) end end
each_template(paths, name, &block)
click to toggle source
# File lib/api_mailer/base.rb, line 96 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.respond_to?(:formats) ? t.formats : [t.format])}.each(&block) end end
html_part()
click to toggle source
# File lib/api_mailer/base.rb, line 109 def html_part Hashie::Mash.new(responses.select{|part| part[:content_type] == "text/html"}.first).presence end
mail(headers={}, &block)
click to toggle source
# File lib/api_mailer/base.rb, line 52 def mail(headers={}, &block) # 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(default_values.merge(headers)) || {} collect_responses(headers, &block) end
process(method_name, *args)
click to toggle source
Calls superclass method
# File lib/api_mailer/base.rb, line 113 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! if lookup_context.respond_to?(:skip_default_locale!) super end end
templates_path(headers)
click to toggle source
# File lib/api_mailer/base.rb, line 92 def templates_path(headers) [headers.delete(:template_path) || self.class.name.underscore] end
text_part()
click to toggle source
# File lib/api_mailer/base.rb, line 105 def text_part Hashie::Mash.new(responses.select{|part| part[:content_type] == "text/plain"}.first).presence end