Class: MandrillMailer::CoreMailer
- Inherits:
-
Object
- Object
- MandrillMailer::CoreMailer
- 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
287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 287 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
134 135 136 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 134 def self.defaults @defaults || super_defaults end |
Instance Attribute Details
#async ⇒ Object
Public: Enable background sending mode
116 117 118 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 116 def async @async end |
#ip_pool ⇒ Object
Public: Name of the dedicated IP pool that should be used to send the message
119 120 121 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 119 def ip_pool @ip_pool end |
#message ⇒ Object
Public: Other information on the message to send
113 114 115 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 113 def @message end |
#send_at ⇒ Object
Public: When message should be sent
122 123 124 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 122 def send_at @send_at end |
Class Method Details
.default(args) ⇒ Object
142 143 144 145 146 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 142 def self.default(args) @defaults ||= {} @defaults[:from] ||= '[email protected]' @defaults.merge!(args) end |
.super_defaults ⇒ Object
138 139 140 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 138 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.
189 190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 189 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.
172 173 174 175 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 172 def self.test_setup_for(mailer_method, &block) @mailer_methods ||= {} @mailer_methods[mailer_method] = block end |
Instance Method Details
#bcc ⇒ Object
251 252 253 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 251 def bcc self. && self.['bcc_address'] end |
#check_required_options ⇒ Object
234 235 236 237 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 234 def mesg = "#{self.class.name}#check_required_options() is not implemented." raise NotImplementedError.new(mesg) end |
#data ⇒ Object
Public: Data hash (deprecated)
229 230 231 232 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 229 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
203 204 205 206 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 203 def deliver mesg = "#{self.class.name}#deliver() is not implemented." raise NotImplementedError.new(mesg) end |
#from ⇒ Object
239 240 241 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 239 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)
223 224 225 226 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 223 def mandrill_mail(args) mesg = "#{self.class.name}#mandrill_mail() is not implemented." raise NotImplementedError.new(mesg) end |
#to ⇒ Object
243 244 245 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 243 def to self. && self.['to'] end |
#to=(values) ⇒ Object
247 248 249 |
# File 'lib/mandrill_mailer/core_mailer.rb', line 247 def to=(values) self. && self.['to'] = format_to_params(values) end |