Class: MandrillMailer::CoreMailer
- Inherits:
-
Object
- Object
- MandrillMailer::CoreMailer
- Includes:
- ActionView::Helpers::NumberHelper
- Defined in:
- lib/mandrill_mailer/core_mailer.rb
Direct Known Subclasses
Defined Under Namespace
Classes: InvalidEmail, InvalidInterceptorParams, InvalidMailerMethod
Class Attribute Summary collapse
-
.defaults ⇒ Object
Public: Defaults for the mailer.
Instance Attribute Summary collapse
-
#async ⇒ Object
Public: Enable background sending mode.
-
#ip_pool ⇒ Object
Public: Name of the dedicated IP pool that should be used to send the message.
-
#message ⇒ Object
Public: Other information on the message to send.
-
#send_at ⇒ Object
Public: When message should be sent.
Class Method Summary collapse
- .default(args) ⇒ Object
- .super_defaults ⇒ Object
-
.test(mailer_method, options = {}) ⇒ Object
Public: Executes a test email.
-
.test_setup_for(mailer_method, &block) ⇒ Object
Public: setup a way to test mailer methods.
Instance Method Summary collapse
- #bcc ⇒ Object
- #check_required_options ⇒ Object
-
#data ⇒ Object
Public: Data hash (deprecated).
-
#deliver ⇒ Object
Public: Triggers the stored Mandrill params to be sent to the Mandrill api.
- #from ⇒ Object
-
#mandrill_mail(args) ⇒ Object
Examples.
- #to ⇒ Object
- #to=(values) ⇒ Object
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args) ⇒ Object (protected)
Proxy route helpers to rails if Rails exists. Doing routes this way makes it so this gem doesn’t need to be a rails engine
292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 292 def method_missing(method, *args) return super unless defined?(Rails) && Rails.application.routes.url_helpers.respond_to?(method) # Check to see if one of the args is an open struct. If it is, we'll assume it's the # test stub and try to call a path or url attribute. if args.any? {|arg| arg.kind_of?(MandrillMailer::Mock)} # take the first OpenStruct found in args and look for .url or.path args.each do |arg| if arg.kind_of?(MandrillMailer::Mock) break arg.url || arg.path end end else = args..merge({host: MandrillMailer.config.[:host], protocol: MandrillMailer.config.[:protocol]}) args << Rails.application.routes.url_helpers.method(method).call(*args) end end |
Class Attribute Details
.defaults ⇒ Object
Public: Defaults for the mailer. Currently the only option is from:
options - The Hash options used to refine the selection (default: {}):
:from - Default from email address
Examples
default from: '[email protected]'
Returns options
133 134 135 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 133 def self.defaults @defaults || super_defaults end |
Instance Attribute Details
#async ⇒ Object
Public: Enable background sending mode
115 116 117 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 115 def async @async end |
#ip_pool ⇒ Object
Public: Name of the dedicated IP pool that should be used to send the message
118 119 120 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 118 def ip_pool @ip_pool end |
#message ⇒ Object
Public: Other information on the message to send
112 113 114 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 112 def @message end |
#send_at ⇒ Object
Public: When message should be sent
121 122 123 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 121 def send_at @send_at end |
Class Method Details
.default(args) ⇒ Object
141 142 143 144 145 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 141 def self.default(args) @defaults ||= {} @defaults[:from] ||= '[email protected]' @defaults.merge!(args) end |
.super_defaults ⇒ Object
137 138 139 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 137 def self.super_defaults superclass.defaults if superclass.respond_to?(:defaults) end |
.test(mailer_method, options = {}) ⇒ Object
Public: Executes a test email
mailer_method - Method to execute
options - The Hash options used to refine the selection (default: {}):
:email - The email to send the test to.
Examples
InvitationMailer.test(:invite, email: '[email protected]')
Returns the duplicated String.
188 189 190 191 192 193 194 195 196 197 198 199 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 188 def self.test(mailer_method, ={}) unless [:email] raise InvalidEmail.new 'Please specify a :email option(email to send the test to)' end if @mailer_methods[mailer_method] @mailer_methods[mailer_method].call(self.new, ) else raise InvalidMailerMethod.new "The mailer method: #{mailer_method} does not have test setup" end end |
.test_setup_for(mailer_method, &block) ⇒ Object
Public: setup a way to test mailer methods
mailer_method - Name of the mailer method the test setup is for
block - Block of code to execute to perform the test. The mailer and options are passed to the block. The options have to contain at least the :email to send the test to.
Examples
test_setup_for :invite do |mailer, |
invitation = OpenStruct.new({
email: [:email],
owner_name: 'foobar',
secret: rand(9000000..1000000).to_s
})
mailer.invite(invitation).deliver
end
Returns the duplicated String.
171 172 173 174 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 171 def self.test_setup_for(mailer_method, &block) @mailer_methods ||= {} @mailer_methods[mailer_method] = block end |
Instance Method Details
#bcc ⇒ Object
250 251 252 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 250 def bcc self. && self.['bcc_address'] end |
#check_required_options ⇒ Object
233 234 235 236 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 233 def mesg = "#{self.class.name}#check_required_options() is not implemented." raise NotImplementedError.new(mesg) end |
#data ⇒ Object
Public: Data hash (deprecated)
228 229 230 231 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 228 def data mesg = "#{self.class.name}#data() is not implemented." raise NotImplementedError.new(mesg) end |
#deliver ⇒ Object
Public: Triggers the stored Mandrill params to be sent to the Mandrill api
202 203 204 205 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 202 def deliver mesg = "#{self.class.name}#deliver() is not implemented." raise NotImplementedError.new(mesg) end |
#from ⇒ Object
238 239 240 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 238 def from self. && self.['from_email'] end |
#mandrill_mail(args) ⇒ Object
Examples
mandrill_mail template: 'Group Invite',
subject: I18n.t('invitation_mailer.invite.subject'),
to: invitation.email,
vars: {
'OWNER_NAME' => invitation.owner_name,
'INVITATION_URL' => new_invitation_url(email: invitation.email, secret: invitation.secret)
}
Returns the the mandrill mailer class (this is so you can chain #deliver like a normal mailer)
222 223 224 225 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 222 def mandrill_mail(args) mesg = "#{self.class.name}#mandrill_mail() is not implemented." raise NotImplementedError.new(mesg) end |
#to ⇒ Object
242 243 244 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 242 def to self. && self.['to'] end |
#to=(values) ⇒ Object
246 247 248 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 246 def to=(values) self. && self.['to'] = format_to_params(values) end |