mandrill_mailer 1.1.0 → 1.2.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/CHANGELOG.md +5 -0
- data/README.md +6 -3
- data/lib/mandrill_mailer.rb +1 -0
- data/lib/mandrill_mailer/core_mailer.rb +8 -1
- data/lib/mandrill_mailer/mandrill_message_later.rb +15 -0
- data/lib/mandrill_mailer/mandrill_template_later.rb +17 -0
- data/lib/mandrill_mailer/message_mailer.rb +10 -2
- data/lib/mandrill_mailer/offline.rb +29 -0
- data/lib/mandrill_mailer/template_mailer.rb +9 -0
- data/lib/mandrill_mailer/version.rb +1 -1
- data/mandrill_mailer.gemspec +1 -0
- data/spec/message_mailer_spec.rb +24 -2
- data/spec/template_mailer_spec.rb +29 -2
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1044b6baf3d9a8f33f1cc09f86516c21d5228c4
|
4
|
+
data.tar.gz: ae3a798dacfe9294991ee3beb3755665558c26ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 532a82b1c66cb927f5e36734c9fe7ec39ac040d4e976c15f3b76829745f36dee8255d48636b71b75c12b0d7497703a04a2cb74db4c29efb2f10e76221b88d24d
|
7
|
+
data.tar.gz: bb9e61792cffe0179339659bfdde72f87237bafe5097a4193646ffc018a309017b331ba39196b3d7938dae52bdb872d47b75e1212d0bf8f4b140619b00dbe361
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
|
5
|
+
## 1.2.0 - 2015-12-22
|
6
|
+
### Added
|
7
|
+
- Support for for deliver_later and deliver_now using ActiveJob. via @BenRuns
|
8
|
+
|
9
|
+
|
5
10
|
## 1.1.0 - 2015-10-02
|
6
11
|
### Added
|
7
12
|
- Optional RSpec helper (`MandrillMailer::RSpecHelper`) with custom matchers
|
data/README.md
CHANGED
@@ -39,6 +39,7 @@ ActionMailer::Base.delivery_method = :smtp
|
|
39
39
|
|
40
40
|
MandrillMailer.configure do |config|
|
41
41
|
config.api_key = ENV['MANDRILL_API_KEY']
|
42
|
+
config.config.deliver_later_queue_name = :default
|
42
43
|
end
|
43
44
|
```
|
44
45
|
|
@@ -97,10 +98,10 @@ end
|
|
97
98
|
```
|
98
99
|
|
99
100
|
* `#default:`
|
100
|
-
* `:from` - set the default from email address for the mailer
|
101
|
+
* `:from` - set the default from email address for the mailer. Defaults to `'example@email.com'`.
|
101
102
|
* `: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
103
|
* `: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`.
|
103
|
-
* `:view_content_link` - set a default to be able to access individual mailer messages in the Mandrill dashboard
|
104
|
+
* `:view_content_link` - set a default to be able to access individual mailer messages in the Mandrill dashboard. Defaults to `false`.
|
104
105
|
|
105
106
|
* `.mandrill_mail`
|
106
107
|
* `:template`(required) - Template slug from within Mandrill (for backwards-compatibility, the template name may also be used but the immutable slug is preferred)
|
@@ -216,7 +217,9 @@ end
|
|
216
217
|
|
217
218
|
You can send the email by using the familiar syntax:
|
218
219
|
|
219
|
-
`InvitationMailer.invite(invitation).
|
220
|
+
`InvitationMailer.invite(invitation).deliver_now`
|
221
|
+
`InvitationMailer.invite(invitation).deliver_later(wait: 1.hour)`
|
222
|
+
For deliver_later, Active Job will need to be configured
|
220
223
|
|
221
224
|
## Creating a test method
|
222
225
|
When switching over to Mandrill for transactional emails we found that it was hard to setup a mailer in the console to send test emails easily (those darn designers), but really, you don't want to have to setup test objects everytime you want to send a test email. You can set up a testing 'mock' once and then call the `.test` method to send the test email.
|
data/lib/mandrill_mailer.rb
CHANGED
@@ -216,7 +216,14 @@ module MandrillMailer
|
|
216
216
|
def deliver
|
217
217
|
raise NotImplementedError.new("#{self.class.name}#deliver is not implemented.")
|
218
218
|
end
|
219
|
-
|
219
|
+
|
220
|
+
def deliver_now
|
221
|
+
raise NotImplementedError.new("#{self.class.name}#deliver_now is not implemented.")
|
222
|
+
end
|
223
|
+
|
224
|
+
def deliver_later
|
225
|
+
raise NotImplementedError.new("#{self.class.name}#deliver_later is not implemented.")
|
226
|
+
end
|
220
227
|
|
221
228
|
def mandrill_mail_handler(args)
|
222
229
|
args
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'mandrill_mailer/message_mailer'
|
2
|
+
module MandrillMailer
|
3
|
+
class MandrillMessageJob < ActiveJob::Base
|
4
|
+
queue_as { MandrillMailer.config.deliver_later_queue_name }
|
5
|
+
|
6
|
+
def perform(message, async, ip_pool, send_at)
|
7
|
+
mailer = MandrillMailer::MessageMailer.new
|
8
|
+
mailer.message = message
|
9
|
+
mailer.async = async
|
10
|
+
mailer.ip_pool = ip_pool
|
11
|
+
mailer.send_at = send_at
|
12
|
+
mailer.deliver_now
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'mandrill_mailer/template_mailer'
|
2
|
+
module MandrillMailer
|
3
|
+
class MandrillTemplateJob < ActiveJob::Base
|
4
|
+
queue_as { MandrillMailer.config.deliver_later_queue_name }
|
5
|
+
|
6
|
+
def perform(template_name, template_content, message, async, ip_pool, send_at)
|
7
|
+
mailer = MandrillMailer::TemplateMailer.new
|
8
|
+
mailer.template_name = template_name
|
9
|
+
mailer.template_content = template_content
|
10
|
+
mailer.message = message
|
11
|
+
mailer.async = async
|
12
|
+
mailer.ip_pool = ip_pool
|
13
|
+
mailer.send_at = send_at
|
14
|
+
mailer.deliver_now
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -92,12 +92,20 @@
|
|
92
92
|
|
93
93
|
# :important - whether or not this message is important, and should be delivered ahead of non-important messages
|
94
94
|
require 'mandrill_mailer/core_mailer'
|
95
|
-
|
95
|
+
require 'mandrill_mailer/mandrill_message_later'
|
96
96
|
module MandrillMailer
|
97
97
|
class MessageMailer < MandrillMailer::CoreMailer
|
98
98
|
# Public: Triggers the stored Mandrill params to be sent to the Mandrill api
|
99
99
|
def deliver
|
100
|
+
deliver_now
|
101
|
+
end
|
102
|
+
|
103
|
+
def deliver_now
|
100
104
|
mandrill_api.messages.send(message, async, ip_pool, send_at)
|
101
|
-
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def deliver_later(options={})
|
108
|
+
MandrillMailer::MandrillMessageJob.set(options).perform_later(message, async, ip_pool, send_at)
|
109
|
+
end
|
102
110
|
end
|
103
111
|
end
|
@@ -27,6 +27,22 @@ module MandrillMailer
|
|
27
27
|
|
28
28
|
class TemplateMailer
|
29
29
|
def deliver
|
30
|
+
deliver_now
|
31
|
+
end
|
32
|
+
|
33
|
+
def deliver_now
|
34
|
+
MandrillMailer::Mock.new({
|
35
|
+
:template_name => template_name,
|
36
|
+
:template_content => template_content,
|
37
|
+
:message => message,
|
38
|
+
:async => async,
|
39
|
+
:ip_pool => ip_pool,
|
40
|
+
:send_at => send_at
|
41
|
+
}).tap do |mock|
|
42
|
+
MandrillMailer.deliveries << mock
|
43
|
+
end
|
44
|
+
end
|
45
|
+
def deliver_later
|
30
46
|
MandrillMailer::Mock.new({
|
31
47
|
:template_name => template_name,
|
32
48
|
:template_content => template_content,
|
@@ -42,6 +58,19 @@ module MandrillMailer
|
|
42
58
|
|
43
59
|
class MessageMailer
|
44
60
|
def deliver
|
61
|
+
deliver_now
|
62
|
+
end
|
63
|
+
def deliver_now
|
64
|
+
MandrillMailer::Mock.new({
|
65
|
+
:message => message,
|
66
|
+
:async => async,
|
67
|
+
:ip_pool => ip_pool,
|
68
|
+
:send_at => send_at
|
69
|
+
}).tap do |mock|
|
70
|
+
MandrillMailer.deliveries << mock
|
71
|
+
end
|
72
|
+
end
|
73
|
+
def deliver_later
|
45
74
|
MandrillMailer::Mock.new({
|
46
75
|
:message => message,
|
47
76
|
:async => async,
|
@@ -106,6 +106,7 @@
|
|
106
106
|
# :important - whether or not this message is important, and should be delivered ahead of non-important messages
|
107
107
|
require 'mandrill_mailer/core_mailer'
|
108
108
|
require 'mandrill_mailer/arg_formatter'
|
109
|
+
require 'mandrill_mailer/mandrill_template_later'
|
109
110
|
|
110
111
|
module MandrillMailer
|
111
112
|
class TemplateMailer < MandrillMailer::CoreMailer
|
@@ -118,9 +119,17 @@ module MandrillMailer
|
|
118
119
|
|
119
120
|
# Public: Triggers the stored Mandrill params to be sent to the Mandrill api
|
120
121
|
def deliver
|
122
|
+
deliver_now
|
123
|
+
end
|
124
|
+
|
125
|
+
def deliver_now
|
121
126
|
mandrill_api.messages.send_template(template_name, template_content, message, async, ip_pool, send_at)
|
122
127
|
end
|
123
128
|
|
129
|
+
def deliver_later(options={})
|
130
|
+
MandrillMailer::MandrillTemplateJob.set(options).perform_later(template_name, template_content, message, async, ip_pool, send_at)
|
131
|
+
end
|
132
|
+
|
124
133
|
# Handle template mailer specifics before formating the given args
|
125
134
|
def mandrill_mail_handler(args)
|
126
135
|
# Mandrill requires template content to be there, set default value
|
data/mandrill_mailer.gemspec
CHANGED
data/spec/message_mailer_spec.rb
CHANGED
@@ -8,20 +8,42 @@ describe MandrillMailer::MessageMailer do
|
|
8
8
|
MandrillMailer.config.api_key = api_key
|
9
9
|
end
|
10
10
|
|
11
|
-
describe "#
|
11
|
+
describe "#deliver_now" do
|
12
12
|
let(:async) { double(:async) }
|
13
13
|
let(:ip_pool) { double(:ip_pool) }
|
14
14
|
let(:send_at) { double(:send_at) }
|
15
15
|
let(:message) { double(:message) }
|
16
16
|
|
17
|
-
|
17
|
+
before do
|
18
18
|
mailer.async = async
|
19
19
|
mailer.ip_pool = ip_pool
|
20
20
|
mailer.send_at = send_at
|
21
21
|
mailer.message = message
|
22
|
+
end
|
22
23
|
|
24
|
+
it "calls the messages api with #send" do
|
25
|
+
expect_any_instance_of(Mandrill::Messages).to receive(:send).with(message, async, ip_pool, send_at)
|
26
|
+
mailer.deliver_now
|
27
|
+
end
|
28
|
+
it "has an alias deliver" do
|
23
29
|
expect_any_instance_of(Mandrill::Messages).to receive(:send).with(message, async, ip_pool, send_at)
|
24
30
|
mailer.deliver
|
25
31
|
end
|
26
32
|
end
|
33
|
+
describe "#deliver_later" do
|
34
|
+
let(:async) { 'async' }
|
35
|
+
let(:ip_pool) { 'ip_pool' }
|
36
|
+
let(:send_at) { 'send_at'}
|
37
|
+
let(:message) { 'this is a message'}
|
38
|
+
|
39
|
+
it "calls the messages api with #send" do
|
40
|
+
mailer.async = async
|
41
|
+
mailer.ip_pool = ip_pool
|
42
|
+
mailer.send_at = send_at
|
43
|
+
mailer.message = message
|
44
|
+
|
45
|
+
expect_any_instance_of(Mandrill::Messages).to receive(:send).with(message, async, ip_pool, send_at)
|
46
|
+
mailer.deliver_later
|
47
|
+
end
|
48
|
+
end
|
27
49
|
end
|
@@ -30,7 +30,7 @@ describe MandrillMailer::TemplateMailer do
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
describe "#
|
33
|
+
describe "#deliver_now" do
|
34
34
|
let(:async) { double(:async) }
|
35
35
|
let(:ip_pool) { double(:ip_pool) }
|
36
36
|
let(:send_at) { double(:send_at) }
|
@@ -38,16 +38,43 @@ describe MandrillMailer::TemplateMailer do
|
|
38
38
|
let(:template_name) { double(:template_name) }
|
39
39
|
let(:template_content) { double(:template_content) }
|
40
40
|
|
41
|
-
|
41
|
+
before do
|
42
42
|
mailer.async = async
|
43
43
|
mailer.ip_pool = ip_pool
|
44
44
|
mailer.send_at = send_at
|
45
45
|
mailer.message = message
|
46
46
|
mailer.template_content = template_content
|
47
47
|
mailer.template_name = template_name
|
48
|
+
end
|
48
49
|
|
50
|
+
it "calls the messages api with #send_template" do
|
51
|
+
expect_any_instance_of(Mandrill::Messages).to receive(:send_template).with(template_name, template_content, message, async, ip_pool, send_at)
|
52
|
+
mailer.deliver_now
|
53
|
+
end
|
54
|
+
|
55
|
+
it "has an alias deliver" do
|
49
56
|
expect_any_instance_of(Mandrill::Messages).to receive(:send_template).with(template_name, template_content, message, async, ip_pool, send_at)
|
50
57
|
mailer.deliver
|
51
58
|
end
|
52
59
|
end
|
60
|
+
describe "#deliver_later" do
|
61
|
+
let(:async) { false }
|
62
|
+
let(:ip_pool) { 1 }
|
63
|
+
let(:send_at) { '100'}
|
64
|
+
let(:message) { 'message' }
|
65
|
+
let(:template_name) { 'fake_template' }
|
66
|
+
let(:template_content) { 'content' }
|
67
|
+
|
68
|
+
it "calls the messages api with #send_template" do
|
69
|
+
mailer.async = async
|
70
|
+
mailer.ip_pool = ip_pool
|
71
|
+
mailer.send_at = send_at
|
72
|
+
mailer.message = message
|
73
|
+
mailer.template_content = template_content
|
74
|
+
mailer.template_name = template_name
|
75
|
+
|
76
|
+
expect_any_instance_of(Mandrill::Messages).to receive(:send_template).with(template_name, template_content, message, async, ip_pool, send_at)
|
77
|
+
mailer.deliver_later
|
78
|
+
end
|
79
|
+
end
|
53
80
|
end
|
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: 1.
|
4
|
+
version: 1.2.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-
|
11
|
+
date: 2015-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activejob
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: mandrill-api
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,6 +110,8 @@ files:
|
|
96
110
|
- lib/mandrill_mailer.rb
|
97
111
|
- lib/mandrill_mailer/arg_formatter.rb
|
98
112
|
- lib/mandrill_mailer/core_mailer.rb
|
113
|
+
- lib/mandrill_mailer/mandrill_message_later.rb
|
114
|
+
- lib/mandrill_mailer/mandrill_template_later.rb
|
99
115
|
- lib/mandrill_mailer/message_mailer.rb
|
100
116
|
- lib/mandrill_mailer/mock.rb
|
101
117
|
- lib/mandrill_mailer/offline.rb
|
@@ -137,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
153
|
version: '0'
|
138
154
|
requirements: []
|
139
155
|
rubyforge_project:
|
140
|
-
rubygems_version: 2.4.
|
156
|
+
rubygems_version: 2.4.5.1
|
141
157
|
signing_key:
|
142
158
|
specification_version: 4
|
143
159
|
summary: Transactional Mailer for Mandrill
|