mandrill_mailer 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +15 -0
- data/CHANGELOG.md +7 -0
- data/README.md +3 -2
- data/lib/mandrill_mailer/core_mailer.rb +22 -6
- data/lib/mandrill_mailer/message_mailer.rb +1 -1
- data/lib/mandrill_mailer/template_mailer.rb +3 -1
- data/lib/mandrill_mailer/version.rb +1 -1
- data/spec/template_mailer_spec.rb +10 -6
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcf5756ff80bf3ffe6dc8e5f7ce8e3696c2f0f02
|
4
|
+
data.tar.gz: 875412a838c62f216bc8d1aa918dc357d4d754eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adaed5b204343d14875024f50683af9863a97f0a7d7659d76022646ef80fe01d27a4f86c7eeb4b4f2596fadfda8ce56358f442cd6496e389fb1fb0bd94025397
|
7
|
+
data.tar.gz: bcd01547a76e87c47bcd17ce04d42685c2f8d3a9abd6ca35925db1229032047ddc0d256f0ed85688ca6cec3b05e84600898ccc3b26749070d9693b793a9c139b
|
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 0.6.0
|
2
|
+
- [IMPROVEMENT] Allow for default `merge_vars` to be set on the mailer class so that every method inherits them, just like the existing default `from` and `from_name`.
|
3
|
+
|
4
|
+
# 0.5.2
|
5
|
+
- [IMPROVEMENT] Allow the mandrill api gem to be more flexible in the accepted version
|
6
|
+
which allows for the json gem to be updated internally.
|
7
|
+
|
1
8
|
# 0.5.2
|
2
9
|
- [IMPROVEMENT] Allow the mandrill api gem to be more flexible in the accepted version
|
3
10
|
which allows for the json gem to be updated internally.
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Mandrill Mailer
|
2
|
-
[](rubygems.org/gems/mandrill_mailer)
|
2
|
+
[](https://travis-ci.org/renz45/mandrill_mailer) [](rubygems.org/gems/mandrill_mailer)
|
3
3
|
[](https://codeclimate.com/github/renz45/mandrill_mailer)
|
4
|
-
[](https://gemnasium.com/renz45/mandrill_mailer)
|
4
|
+
[](https://gemnasium.com/renz45/mandrill_mailer) [](http://inch-ci.org/github/renz45/mandrill_mailer)
|
5
5
|
|
6
6
|
Inherit the MandrillMailer class in your existing Rails mailers to send transactional emails through Mandrill using their template-based emails.
|
7
7
|
|
@@ -99,6 +99,7 @@ end
|
|
99
99
|
* `#default:`
|
100
100
|
* `:from` - set the default from email address for the mailer
|
101
101
|
* `:from_name` - set the default from name for the mailer. If not set, defaults to from email address. Setting :from_name in the .mandrill_mail overrides the default.
|
102
|
+
* `:merge_vars` - set some default `merge_vars` that will be sent with every mailer method (in `global_merge_vars` so there's no risk of collision with method-specific `merge_vars`.
|
102
103
|
|
103
104
|
* `.mandrill_mail`
|
104
105
|
* `:template`(required) - Template slug from within Mandrill (for backwards-compatibility, the template name may also be used but the immutable slug is preferred)
|
@@ -4,7 +4,9 @@
|
|
4
4
|
# Example usage:
|
5
5
|
|
6
6
|
# class InvitationMailer < MandrillMailer::TemplateMailer
|
7
|
-
# default from: 'support@codeschool.com'
|
7
|
+
# default from: 'support@codeschool.com',
|
8
|
+
# from_name: 'Code School',
|
9
|
+
# merge_vars: { 'FOO' => 'Bar' }
|
8
10
|
|
9
11
|
# def invite(invitation)
|
10
12
|
# invitees = invitation.invitees.map { |invitee| { email: invitee.email, name: invitee.name } }
|
@@ -34,7 +36,9 @@
|
|
34
36
|
# end
|
35
37
|
|
36
38
|
# #default:
|
37
|
-
# :from
|
39
|
+
# :from - set the default from email address for the mailer
|
40
|
+
# :from_name - set the default from name for the mailer
|
41
|
+
# :merge_vars - set the default merge vars for the mailer
|
38
42
|
|
39
43
|
# .mandrill_mail
|
40
44
|
# :template(required) - Template name from within Mandrill
|
@@ -123,12 +127,17 @@ module MandrillMailer
|
|
123
127
|
|
124
128
|
# Public: Defaults for the mailer. Currently the only option is from:
|
125
129
|
#
|
126
|
-
# options
|
127
|
-
# :from
|
130
|
+
# options - The Hash options used to refine the selection (default: {}):
|
131
|
+
# :from - Default from email address
|
132
|
+
# :from_name - Default from name
|
133
|
+
# :merge_vars - Default merge vars
|
128
134
|
#
|
129
135
|
# Examples
|
130
136
|
#
|
131
|
-
# default from: 'foo@bar.com'
|
137
|
+
# default from: 'foo@bar.com',
|
138
|
+
# from_name: 'Foo Bar',
|
139
|
+
# merge_vars: {'FOO' => 'Bar'}
|
140
|
+
#
|
132
141
|
#
|
133
142
|
# Returns options
|
134
143
|
def self.defaults
|
@@ -142,6 +151,7 @@ module MandrillMailer
|
|
142
151
|
def self.default(args)
|
143
152
|
@defaults ||= {}
|
144
153
|
@defaults[:from] ||= 'example@email.com'
|
154
|
+
@defaults[:merge_vars] ||= {}
|
145
155
|
@defaults.merge!(args)
|
146
156
|
end
|
147
157
|
|
@@ -316,6 +326,8 @@ module MandrillMailer
|
|
316
326
|
|
317
327
|
# convert a normal hash into the format mandrill needs
|
318
328
|
def mandrill_args(args)
|
329
|
+
args = merge_default_merge_vars(args)
|
330
|
+
|
319
331
|
return [] unless args
|
320
332
|
args.map do |k,v|
|
321
333
|
{'name' => k, 'content' => v}
|
@@ -326,10 +338,14 @@ module MandrillMailer
|
|
326
338
|
return [] unless args
|
327
339
|
args.map do |item|
|
328
340
|
rcpt = item.keys[0]
|
329
|
-
{'rcpt' => rcpt, 'vars' => mandrill_args(item.fetch(rcpt))}
|
341
|
+
{ 'rcpt' => rcpt, 'vars' => mandrill_args(item.fetch(rcpt)) }
|
330
342
|
end
|
331
343
|
end
|
332
344
|
|
345
|
+
def merge_default_merge_vars(args)
|
346
|
+
self.class.defaults[:merge_vars].merge(args)
|
347
|
+
end
|
348
|
+
|
333
349
|
# ensure only true or false is returned given arg
|
334
350
|
def format_boolean(arg)
|
335
351
|
arg ? true : false
|
@@ -168,7 +168,7 @@ module MandrillMailer
|
|
168
168
|
"preserve_recipients" => args[:preserve_recipients],
|
169
169
|
"bcc_address" => args[:bcc],
|
170
170
|
"global_merge_vars" => mandrill_args(args[:vars]),
|
171
|
-
"merge_vars" => mandrill_rcpt_args(args[:recipient_vars]),
|
171
|
+
"merge_vars" => mandrill_rcpt_args(args[:recipient_vars] || self.class.defaults[:merge_vars]),
|
172
172
|
"tags" => args[:tags],
|
173
173
|
"subaccount" => args[:subaccount],
|
174
174
|
"google_analytics_domains" => args[:google_analytics_domains],
|
@@ -4,7 +4,9 @@
|
|
4
4
|
# Example usage:
|
5
5
|
|
6
6
|
# class InvitationMailer < MandrillMailer::TemplateMailer
|
7
|
-
# default from: 'support@codeschool.com'
|
7
|
+
# default from: 'support@codeschool.com',
|
8
|
+
# from_name: 'Code School',
|
9
|
+
# merge_vars: { 'FOO' => 'Bar' }
|
8
10
|
|
9
11
|
# def invite(invitation)
|
10
12
|
# invitees = invitation.invitees.map { |invitee| { email: invitee.email, name: invitee.name } }
|
@@ -360,35 +360,39 @@ describe MandrillMailer::TemplateMailer do
|
|
360
360
|
describe 'defaults' do
|
361
361
|
it 'should not share between different subclasses' do
|
362
362
|
klassA = Class.new(MandrillMailer::TemplateMailer) do
|
363
|
-
default from_name: 'ClassA'
|
363
|
+
default from_name: 'ClassA', merge_vars: { 'FOO' => 'Bar' }
|
364
364
|
end
|
365
365
|
klassB = Class.new(MandrillMailer::TemplateMailer) do
|
366
366
|
default from_name: 'ClassB'
|
367
367
|
end
|
368
368
|
|
369
369
|
expect(klassA.mandrill_mail({vars: {}}).message['from_name']).to eq 'ClassA'
|
370
|
+
expect(klassA.mandrill_mail({vars: {}}).message['global_merge_vars']).to include({"name"=>"FOO", "content"=>"Bar"})
|
370
371
|
expect(klassB.mandrill_mail({vars: {}}).message['from_name']).to eq 'ClassB'
|
372
|
+
expect(klassB.mandrill_mail({vars: {}}).message['global_merge_vars']).to_not include({"name"=>"FOO", "content"=>"Bar"})
|
371
373
|
end
|
372
374
|
|
373
375
|
it 'should use defaults from the parent class' do
|
374
376
|
klassA = Class.new(MandrillMailer::TemplateMailer) do
|
375
|
-
default from_name: 'ClassA'
|
377
|
+
default from_name: 'ClassA', merge_vars: { 'FOO' => 'Bar' }
|
376
378
|
end
|
377
379
|
klassB = Class.new(klassA) do
|
378
380
|
end
|
379
381
|
|
380
|
-
expect(klassB.mandrill_mail({vars:{}}).message['from_name']).to eq 'ClassA'
|
382
|
+
expect(klassB.mandrill_mail({vars: {}}).message['from_name']).to eq 'ClassA'
|
383
|
+
expect(klassB.mandrill_mail({vars: {}}).message['global_merge_vars']).to include({"name"=>"FOO", "content"=>"Bar"})
|
381
384
|
end
|
382
385
|
|
383
386
|
it 'should allow overriding defaults from the parent' do
|
384
387
|
klassA = Class.new(MandrillMailer::TemplateMailer) do
|
385
|
-
default from_name: 'ClassA'
|
388
|
+
default from_name: 'ClassA', merge_vars: { 'FOO' => 'Bar' }
|
386
389
|
end
|
387
390
|
klassB = Class.new(klassA) do
|
388
|
-
default from_name: 'ClassB'
|
391
|
+
default from_name: 'ClassB', merge_vars: { 'FOO' => 'Boo' }
|
389
392
|
end
|
390
393
|
|
391
|
-
expect(klassB.mandrill_mail({vars:{}}).message['from_name']).to eq 'ClassB'
|
394
|
+
expect(klassB.mandrill_mail({vars: {}}).message['from_name']).to eq 'ClassB'
|
395
|
+
expect(klassB.mandrill_mail({vars: {}}).message['global_merge_vars']).to include({"name"=>"FOO", "content"=>"Boo"})
|
392
396
|
end
|
393
397
|
end
|
394
398
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mandrill_mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Rensel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04
|
11
|
+
date: 2015-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -89,6 +89,7 @@ extra_rdoc_files: []
|
|
89
89
|
files:
|
90
90
|
- ".gitignore"
|
91
91
|
- ".rspec"
|
92
|
+
- ".travis.yml"
|
92
93
|
- CHANGELOG.md
|
93
94
|
- Gemfile
|
94
95
|
- README.md
|