mandrill_mailer 0.4.13 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGELOG.md +3 -0
- data/README.md +42 -30
- data/lib/mandrill_mailer/core_mailer.rb +12 -20
- data/lib/mandrill_mailer/message_mailer.rb +12 -12
- data/lib/mandrill_mailer/template_mailer.rb +8 -8
- data/lib/mandrill_mailer/version.rb +1 -1
- data/spec/core_mailer_spec.rb +67 -0
- data/spec/template_mailer_spec.rb +7 -5
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Y2VmMGFhYjViZGU1MGI5YTk4NzY3OWNkMzk5N2ZhYzE1ZGY1NWU4OQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZWUwMGI0MjU1ZmExNWY2YmI0NzcyZDM0Yjc1OTY4YmUwYjM4MGZkYw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDhjMzc2Yzk1MGJhZGYzZmE2MTIwNGVlMjBjNDJkYmIzODViN2IzYTZjZjRh
|
10
|
+
MGJjMWVmMWMwMjI3Mzc5YjQwNDBjODExNTVhZTkwMDdiZGIwOTE4Zjc0YTc0
|
11
|
+
ZDc4ODAwMmVjNzFjZWI3MmI3NDhiMDc5YWYyNzg0ZDJiMTlhMTQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTI4MTJlNWM1MzdmMTk1NjMwMjM2NzQ1YmRlNmVmMjUxODllYWU2YzIxMTU0
|
14
|
+
NGI0MWE4NGM2NGU0OWY1YmFlNjk5YjVmNjI0MTljNjM4OTc4ZTE0ZDZjZjRl
|
15
|
+
ZDgzY2JhODBkOTI3YjcxZWNjYWE3MjdhYTEzNTU4NTBlMzk5YWY=
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# Mandrill Mailer
|
2
|
-
[![Gem Version](http://img.shields.io/gem/v/mandrill_mailer.svg)](rubygems.org/gems/mandrill_mailer)
|
3
|
-
[![Code Climate](http://img.shields.io/codeclimate/github/renz45/mandrill_mailer.svg)](https://codeclimate.com/github/renz45/mandrill_mailer)
|
1
|
+
# Mandrill Mailer
|
2
|
+
[![Gem Version](http://img.shields.io/gem/v/mandrill_mailer.svg)](rubygems.org/gems/mandrill_mailer)
|
3
|
+
[![Code Climate](http://img.shields.io/codeclimate/github/renz45/mandrill_mailer.svg)](https://codeclimate.com/github/renz45/mandrill_mailer)
|
4
4
|
[![Dependencies](http://img.shields.io/gemnasium/renz45/mandrill_mailer.svg)](https://gemnasium.com/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.
|
@@ -32,7 +32,7 @@ ActionMailer::Base.smtp_settings = {
|
|
32
32
|
:address => "smtp.mandrillapp.com",
|
33
33
|
:port => 587,
|
34
34
|
:user_name => ENV['MANDRILL_USERNAME'],
|
35
|
-
:password => ENV['
|
35
|
+
:password => ENV['MANDRILL_API_KEY'],
|
36
36
|
:domain => 'heroku.com'
|
37
37
|
}
|
38
38
|
ActionMailer::Base.delivery_method = :smtp
|
@@ -47,7 +47,7 @@ You don't need to add the ActionMailer stuff unless you're still using ActionMai
|
|
47
47
|
This uses the Mandrill SMTP servers. If you're using template-based emails
|
48
48
|
through the Mandrill API you only need the `MandrillMailer.configure` portion.
|
49
49
|
|
50
|
-
Do not forget to setup the environment (`ENV`) variables on your server instead
|
50
|
+
Do not forget to setup the environment (`ENV`) variables on your server instead
|
51
51
|
of hardcoding your Mandrill username and password in the `mail.rb` initializer.
|
52
52
|
|
53
53
|
You will also need to set `default_url_options` for the mailer, similar to ActionMailer
|
@@ -68,25 +68,30 @@ class InvitationMailer < MandrillMailer::TemplateMailer
|
|
68
68
|
# in this example `invitation.invitees` is an Array
|
69
69
|
invitees = invitation.invitees.map { |invitee| { email: invitee.email, name: invitee.name } }
|
70
70
|
|
71
|
-
mandrill_mail
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
71
|
+
mandrill_mail(
|
72
|
+
template: 'group-invite',
|
73
|
+
subject: I18n.t('invitation_mailer.invite.subject'),
|
74
|
+
to: invitees,
|
75
|
+
# to: invitation.email,
|
76
|
+
# to: { email: invitation.email, name: 'Honored Guest' },
|
77
|
+
vars: {
|
78
|
+
'OWNER_NAME' => invitation.owner_name,
|
79
|
+
'PROJECT_NAME' => invitation.project_name
|
80
|
+
},
|
81
|
+
important: true,
|
82
|
+
inline_css: true,
|
83
|
+
recipient_vars: invitation.invitees.map do |invitee|
|
84
|
+
{ invitee.email =>
|
85
|
+
{
|
86
|
+
'INVITEE_NAME' => invitee.name,
|
87
|
+
'INVITATION_URL' => new_invitation_url(
|
88
|
+
invitee.email,
|
89
|
+
secret: invitee.secret_code
|
90
|
+
)
|
91
|
+
}
|
92
|
+
}
|
93
|
+
end
|
94
|
+
)
|
90
95
|
end
|
91
96
|
end
|
92
97
|
```
|
@@ -141,14 +146,14 @@ end
|
|
141
146
|
* `:inline_css` - whether or not to automatically inline all CSS styles provided in the message HTML - only for HTML documents less than 256KB in size.
|
142
147
|
|
143
148
|
* `:attachments` - An array of file objects with the following keys:
|
144
|
-
|
145
|
-
|
146
|
-
|
149
|
+
* `content`: The file contents, must be a base64 encoded string
|
150
|
+
* `name`: The name of the file
|
151
|
+
* `type`: This is the mimetype of the file. Ex. png = image/png, pdf = application/pdf, txt = text/plain etc etc
|
147
152
|
|
148
153
|
* `:images` - An array of embedded images to add to the message:
|
149
|
-
|
150
|
-
|
151
|
-
|
154
|
+
* `content`: The file contents, must be a base64 encoded string
|
155
|
+
* `name`: The name of the file
|
156
|
+
* `type`: This is the mimetype of the file. Ex. png = image/png, pdf = application/pdf, txt = text/plain etc etc etc
|
152
157
|
|
153
158
|
* `:async` - Whether or not this message should be sent asynchronously
|
154
159
|
|
@@ -183,6 +188,13 @@ class InvitationMailer < MandrillMailer::MessageMailer
|
|
183
188
|
},
|
184
189
|
important: true,
|
185
190
|
inline_css: true,
|
191
|
+
attachments: [
|
192
|
+
{
|
193
|
+
content: Base64.encode64(File.read(File.expand_path('assets/offer.pdf'))),
|
194
|
+
name: 'offer.pdf',
|
195
|
+
type: 'application/pdf'
|
196
|
+
}
|
197
|
+
],
|
186
198
|
recipient_vars: invitation.invitees.map do |invitee| # invitation.invitees is an Array
|
187
199
|
{ invitee.email =>
|
188
200
|
{
|
@@ -48,7 +48,7 @@
|
|
48
48
|
# 'example@domain.com`
|
49
49
|
# 2)
|
50
50
|
# { email: 'someone@email.com', name: 'Bob Bertly' }
|
51
|
-
# 3)
|
51
|
+
# 3)
|
52
52
|
# [{ email: 'someone@email.com', name: 'Bob Bertly' },
|
53
53
|
# { email: 'other@email.com', name: 'Claire Nayo' }]
|
54
54
|
#
|
@@ -107,7 +107,7 @@ module MandrillMailer
|
|
107
107
|
class InvalidEmail < StandardError; end
|
108
108
|
class InvalidMailerMethod < StandardError; end
|
109
109
|
class InvalidInterceptorParams < StandardError; end
|
110
|
-
|
110
|
+
|
111
111
|
# Public: Other information on the message to send
|
112
112
|
attr_accessor :message
|
113
113
|
|
@@ -151,7 +151,7 @@ module MandrillMailer
|
|
151
151
|
# Public: setup a way to test mailer methods
|
152
152
|
#
|
153
153
|
# mailer_method - Name of the mailer method the test setup is for
|
154
|
-
#
|
154
|
+
#
|
155
155
|
# block - Block of code to execute to perform the test. The mailer
|
156
156
|
# and options are passed to the block. The options have to
|
157
157
|
# contain at least the :email to send the test to.
|
@@ -176,7 +176,7 @@ module MandrillMailer
|
|
176
176
|
# Public: Executes a test email
|
177
177
|
#
|
178
178
|
# mailer_method - Method to execute
|
179
|
-
#
|
179
|
+
#
|
180
180
|
# options - The Hash options used to refine the selection (default: {}):
|
181
181
|
# :email - The email to send the test to.
|
182
182
|
#
|
@@ -197,17 +197,17 @@ module MandrillMailer
|
|
197
197
|
end
|
198
198
|
|
199
199
|
end
|
200
|
-
|
200
|
+
|
201
201
|
# Public: Triggers the stored Mandrill params to be sent to the Mandrill api
|
202
202
|
def deliver
|
203
203
|
mesg = "#{self.class.name}#deliver() is not implemented."
|
204
204
|
raise NotImplementedError.new(mesg)
|
205
205
|
end
|
206
|
-
|
206
|
+
|
207
207
|
# Public: Build the hash needed to send to the mandrill api
|
208
208
|
#
|
209
209
|
# args - The Hash options used to refine the selection:
|
210
|
-
|
210
|
+
|
211
211
|
# Examples
|
212
212
|
#
|
213
213
|
# mandrill_mail template: 'Group Invite',
|
@@ -229,7 +229,7 @@ module MandrillMailer
|
|
229
229
|
mesg = "#{self.class.name}#data() is not implemented."
|
230
230
|
raise NotImplementedError.new(mesg)
|
231
231
|
end
|
232
|
-
|
232
|
+
|
233
233
|
def check_required_options
|
234
234
|
mesg = "#{self.class.name}#check_required_options() is not implemented."
|
235
235
|
raise NotImplementedError.new(mesg)
|
@@ -257,22 +257,16 @@ module MandrillMailer
|
|
257
257
|
return unless args
|
258
258
|
args.map do |attachment|
|
259
259
|
attachment.symbolize_keys!
|
260
|
-
type = attachment[:mimetype]
|
261
|
-
name = attachment[:filename]
|
262
|
-
file = attachment[:file]
|
260
|
+
type = attachment[:mimetype] || attachment[:type]
|
261
|
+
name = attachment[:filename] || attachment[:name]
|
262
|
+
file = attachment[:file] || attachment[:content]
|
263
263
|
{"type" => type, "name" => name, "content" => Base64.encode64(file)}
|
264
264
|
end
|
265
265
|
end
|
266
266
|
|
267
267
|
def mandrill_images_args(args)
|
268
268
|
return unless args
|
269
|
-
args
|
270
|
-
attachment.symbolize_keys!
|
271
|
-
type = attachment[:mimetype]
|
272
|
-
name = attachment[:filename]
|
273
|
-
file = attachment[:file]
|
274
|
-
{"type" => type, "name" => name, "content" => Base64.encode64(file)}
|
275
|
-
end
|
269
|
+
mandrill_attachment_args(args)
|
276
270
|
end
|
277
271
|
|
278
272
|
# Makes this class act as a singleton without it actually being a singleton
|
@@ -360,7 +354,5 @@ module MandrillMailer
|
|
360
354
|
def api_key
|
361
355
|
MandrillMailer.config.api_key
|
362
356
|
end
|
363
|
-
|
364
|
-
|
365
357
|
end
|
366
358
|
end
|
@@ -26,7 +26,7 @@
|
|
26
26
|
# }
|
27
27
|
# }
|
28
28
|
# end,
|
29
|
-
# attachments: [{
|
29
|
+
# attachments: [{content: Base64.encode64(File.read(File.expand_path('assets/some_image.png'))), name: 'MyImage.png', type: 'image/png'}],
|
30
30
|
# important: true,
|
31
31
|
# inline_css: true
|
32
32
|
# end
|
@@ -48,7 +48,7 @@
|
|
48
48
|
# 'example@domain.com`
|
49
49
|
# 2)
|
50
50
|
# { email: 'someone@email.com', name: 'Bob Bertly' }
|
51
|
-
# 3)
|
51
|
+
# 3)
|
52
52
|
# [{ email: 'someone@email.com', name: 'Bob Bertly' },
|
53
53
|
# { email: 'other@email.com', name: 'Claire Nayo' }]
|
54
54
|
#
|
@@ -62,14 +62,14 @@
|
|
62
62
|
# ex. [{'someone@email.com' => {'INVITEE_NAME' => 'Roger'}}, {'another@email.com' => {'INVITEE_NAME' => 'Tommy'}}]
|
63
63
|
|
64
64
|
# :attachments - An array of file objects with the following keys:
|
65
|
-
#
|
66
|
-
#
|
67
|
-
#
|
65
|
+
# content: The file contents, must be a base64 encoded string
|
66
|
+
# name: The name of the file
|
67
|
+
# type: This is the mimetype of the file. Ex. png = image/png, pdf = application/pdf, txt = text/plain etc
|
68
68
|
|
69
69
|
# :images - An array of embedded images to add to the message:
|
70
|
-
#
|
71
|
-
#
|
72
|
-
#
|
70
|
+
# content: The file contents, must be a base64 encoded string
|
71
|
+
# name: The name of the file
|
72
|
+
# type: This is the mimetype of the file. Ex. png = image/png, pdf = application/pdf, txt = text/plain etc
|
73
73
|
|
74
74
|
# :headers - Extra headers to add to the message (currently only Reply-To and X-* headers are allowed) {"...": "..."}
|
75
75
|
|
@@ -109,7 +109,7 @@ module MandrillMailer
|
|
109
109
|
mandrill = Mandrill::API.new(api_key)
|
110
110
|
mandrill.messages.send(message, async, ip_pool, send_at)
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
# Public: Build the hash needed to send to the mandrill api
|
114
114
|
#
|
115
115
|
# args - The Hash options used to refine the selection:
|
@@ -151,8 +151,8 @@ module MandrillMailer
|
|
151
151
|
|
152
152
|
# Construct message hash
|
153
153
|
self.message = {
|
154
|
-
"text" => args[:text],
|
155
|
-
"html" => args[:html],
|
154
|
+
"text" => args[:text],
|
155
|
+
"html" => args[:html],
|
156
156
|
"view_content_link" => args[:view_content_link],
|
157
157
|
"subject" => args[:subject],
|
158
158
|
"from_email" => args[:from] || self.class.defaults[:from],
|
@@ -177,7 +177,7 @@ module MandrillMailer
|
|
177
177
|
"attachments" => mandrill_attachment_args(args[:attachments]),
|
178
178
|
"images" => mandrill_images_args(args[:images])
|
179
179
|
}
|
180
|
-
|
180
|
+
|
181
181
|
unless MandrillMailer.config.interceptor_params.nil?
|
182
182
|
unless MandrillMailer.config.interceptor_params.is_a?(Hash)
|
183
183
|
raise InvalidInterceptorParams.new "The interceptor_params config must be a Hash"
|
@@ -27,7 +27,7 @@
|
|
27
27
|
# }
|
28
28
|
# end,
|
29
29
|
# template_content: {},
|
30
|
-
# attachments: [{
|
30
|
+
# attachments: [{contents:Base64.encode64(File.read(File.expand_path('assets/some_image.png'))), name: 'MyImage.png', type: 'image/png'}],
|
31
31
|
# important: true,
|
32
32
|
# inline_css: true
|
33
33
|
# end
|
@@ -48,7 +48,7 @@
|
|
48
48
|
# 'example@domain.com`
|
49
49
|
# 2)
|
50
50
|
# { email: 'someone@email.com', name: 'Bob Bertly' }
|
51
|
-
# 3)
|
51
|
+
# 3)
|
52
52
|
# [{ email: 'someone@email.com', name: 'Bob Bertly' },
|
53
53
|
# { email: 'other@email.com', name: 'Claire Nayo' }]
|
54
54
|
#
|
@@ -67,14 +67,14 @@
|
|
67
67
|
# these fields by passing a Hash {'header' => 'my email content'}
|
68
68
|
|
69
69
|
# :attachments - An array of file objects with the following keys:
|
70
|
-
#
|
71
|
-
#
|
72
|
-
#
|
70
|
+
# content: The file contents, must be a base64 encoded string
|
71
|
+
# name: The name of the file
|
72
|
+
# type: This is the mimetype of the file. Ex. png = image/png, pdf = application/pdf, txt = text/plain etc
|
73
73
|
|
74
74
|
# :images - An array of embedded images to add to the message:
|
75
|
-
#
|
76
|
-
#
|
77
|
-
#
|
75
|
+
# content: The file contents, must be a base64 encoded string
|
76
|
+
# name: The name of the file
|
77
|
+
# type: This is the mimetype of the file. Ex. png = image/png, pdf = application/pdf, txt = text/plain etc
|
78
78
|
|
79
79
|
# :headers - Extra headers to add to the message (currently only Reply-To and X-* headers are allowed) {"...": "..."}
|
80
80
|
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require 'base64'
|
3
|
+
|
4
|
+
describe MandrillMailer::CoreMailer do
|
5
|
+
subject(:core_mailer) { described_class }
|
6
|
+
|
7
|
+
let(:file_args) do
|
8
|
+
{
|
9
|
+
mimetype: "some/type",
|
10
|
+
filename: 'test',
|
11
|
+
file: "testing some test test file"
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:api_args) do
|
16
|
+
{
|
17
|
+
type: "some/type",
|
18
|
+
name: 'test',
|
19
|
+
content: "testing some test test file"
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
describe 'protected#mandrill_attachment_args' do
|
25
|
+
context "with file syntax" do
|
26
|
+
it "formats the correct attachment data" do
|
27
|
+
expect(core_mailer.new.send(:mandrill_attachment_args, [file_args])).to eq([{
|
28
|
+
'type' => "some/type",
|
29
|
+
'name' => 'test',
|
30
|
+
'content' => Base64.encode64("testing some test test file")
|
31
|
+
}])
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "with api syntax" do
|
36
|
+
it "formats the correct attachment data" do
|
37
|
+
expect(core_mailer.new.send(:mandrill_attachment_args, [api_args])).to eq([{
|
38
|
+
'type' => "some/type",
|
39
|
+
'name' => 'test',
|
40
|
+
'content' => Base64.encode64("testing some test test file")
|
41
|
+
}])
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#mandrill_images_args' do
|
47
|
+
context "with file syntax" do
|
48
|
+
it "formats the correct attachment data" do
|
49
|
+
expect(core_mailer.new.send(:mandrill_attachment_args, [file_args])).to eq([{
|
50
|
+
'type' => "some/type",
|
51
|
+
'name' => 'test',
|
52
|
+
'content' => Base64.encode64("testing some test test file")
|
53
|
+
}])
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "with api syntax" do
|
58
|
+
it "formats the correct attachment data" do
|
59
|
+
expect(core_mailer.new.send(:mandrill_attachment_args, [api_args])).to eq([{
|
60
|
+
'type' => "some/type",
|
61
|
+
'name' => 'test',
|
62
|
+
'content' => Base64.encode64("testing some test test file")
|
63
|
+
}])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -58,8 +58,8 @@ describe MandrillMailer::TemplateMailer do
|
|
58
58
|
url_strip_qs: false
|
59
59
|
}
|
60
60
|
end
|
61
|
-
|
62
|
-
|
61
|
+
|
62
|
+
|
63
63
|
let(:message_args) do
|
64
64
|
{
|
65
65
|
text: "Example text content",
|
@@ -97,7 +97,7 @@ describe MandrillMailer::TemplateMailer do
|
|
97
97
|
MandrillMailer.config.default_url_options = { host: default_host }
|
98
98
|
#MandrillMailer.config.stub(:image_path).and_return(image_path)
|
99
99
|
allow(MandrillMailer.config).to receive(:image_path).and_return(image_path)
|
100
|
-
|
100
|
+
|
101
101
|
MandrillMailer::TemplateMailer.default from: from_email, from_name: from_name
|
102
102
|
end
|
103
103
|
|
@@ -215,7 +215,7 @@ describe MandrillMailer::TemplateMailer do
|
|
215
215
|
expect(subject.template_name).to eq 'Email Template'
|
216
216
|
end
|
217
217
|
|
218
|
-
|
218
|
+
|
219
219
|
it 'should set the template content' do
|
220
220
|
expect(subject.template_content).to eq [{'name' => template_content_name, 'content' => template_content_content}]
|
221
221
|
end
|
@@ -252,6 +252,7 @@ describe MandrillMailer::TemplateMailer do
|
|
252
252
|
"url_strip_qs" => args[:url_strip_qs],
|
253
253
|
"preserve_recipients" => false,
|
254
254
|
"bcc_address" => args[:bcc],
|
255
|
+
"merge_language" => args[:merge_language],
|
255
256
|
"global_merge_vars" => [{"name" => var_name, "content" => var_content}],
|
256
257
|
"merge_vars" => [{"rcpt" => to_email, "vars" => [{"name" => var_rcpt_name, "content" => var_rcpt_content}]}],
|
257
258
|
"tags" => args[:tags],
|
@@ -299,6 +300,7 @@ describe MandrillMailer::TemplateMailer do
|
|
299
300
|
"url_strip_qs" => args[:url_strip_qs],
|
300
301
|
"preserve_recipients" => false,
|
301
302
|
"bcc_address" => @intercepted_params[:bcc_address],
|
303
|
+
"merge_language" => args[:merge_language],
|
302
304
|
"global_merge_vars" => [{"name" => var_name, "content" => var_content}],
|
303
305
|
"merge_vars" => [{"rcpt" => to_email, "vars" => [{"name" => var_rcpt_name, "content" => var_rcpt_content}]}],
|
304
306
|
"tags" => @intercepted_params[:tags],
|
@@ -313,7 +315,7 @@ describe MandrillMailer::TemplateMailer do
|
|
313
315
|
end
|
314
316
|
end
|
315
317
|
|
316
|
-
|
318
|
+
|
317
319
|
describe 'url helpers in mailer' do
|
318
320
|
subject { mailer.send(:course_url) }
|
319
321
|
|
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.5.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: 2014-
|
11
|
+
date: 2014-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -101,6 +101,7 @@ files:
|
|
101
101
|
- lib/mandrill_mailer/template_mailer.rb
|
102
102
|
- lib/mandrill_mailer/version.rb
|
103
103
|
- mandrill_mailer.gemspec
|
104
|
+
- spec/core_mailer_spec.rb
|
104
105
|
- spec/fake_rails/fake_rails.rb
|
105
106
|
- spec/message_mailer_spec.rb
|
106
107
|
- spec/spec_helper.rb
|
@@ -131,6 +132,7 @@ signing_key:
|
|
131
132
|
specification_version: 4
|
132
133
|
summary: Transactional Mailer for Mandrill
|
133
134
|
test_files:
|
135
|
+
- spec/core_mailer_spec.rb
|
134
136
|
- spec/fake_rails/fake_rails.rb
|
135
137
|
- spec/message_mailer_spec.rb
|
136
138
|
- spec/spec_helper.rb
|