mandrill_queue 0.1.5 → 0.2.1
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 +7 -7
- data/README.md +30 -16
- data/lib/mandrill_queue.rb +32 -25
- data/lib/mandrill_queue/adapters/resque_adapter.rb +9 -0
- data/lib/mandrill_queue/adapters/sidekiq_adapter.rb +9 -0
- data/lib/mandrill_queue/configuration.rb +1 -1
- data/lib/mandrill_queue/logging.rb +5 -7
- data/lib/mandrill_queue/mailer.rb +2 -2
- data/lib/mandrill_queue/version.rb +1 -1
- data/lib/mandrill_queue/worker.rb +14 -13
- data/lib/rails/generators/mandrill_queue/templates/initializer.rb +11 -3
- metadata +140 -95
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d993b06e898d362091d06fa0f88ee77fb673ed23
|
4
|
+
data.tar.gz: eb07b2ff7184d9a1bd2cbd4ed056dae0e3c7e48b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0fbfa2ab1329e10b0ea7de4153b7553cac82020cf60bca7a0d5c4317916eafb3418864f3ca4ce71a86d9001e2d25a70196299847e9ca8101ea31655b6358ddfe
|
7
|
+
data.tar.gz: b2399bd63cad7a6eb5bdafe57c8c9355f7e11904c2b5320dd1daeb35eb3de0cb553772e05de48c7bcb093c5fcb7dcae29c3124f517e6d5c52096b16a48233427
|
data/README.md
CHANGED
@@ -5,8 +5,7 @@
|
|
5
5
|
[](https://coveralls.io/r/fixate/mandrill_queue)
|
6
6
|
|
7
7
|
DSL for sending mailers through Mailchimps Mandrill API. This gem enqueues the
|
8
|
-
message on a background worker (`Resque`
|
9
|
-
so that it doesnt matter).
|
8
|
+
message on a background worker (`Resque` or `Sidekiq` or write an adapter).
|
10
9
|
|
11
10
|
The DSL is modelled on the JSON api [here](https://mandrillapp.com/api/docs/messages.ruby.html#method=send-template).
|
12
11
|
|
@@ -101,19 +100,25 @@ def html_message(html)
|
|
101
100
|
html "<html><body>#{html}</html></body>"
|
102
101
|
end
|
103
102
|
end
|
103
|
+
```
|
104
|
+
|
105
|
+
### Delivering mail
|
106
|
+
|
107
|
+
Some code that undoubtably looks familiar to you:
|
104
108
|
|
105
|
-
|
106
|
-
# maybe your controller...
|
109
|
+
```ruby
|
107
110
|
# Just like ActionMailer (note the class method calls are handed to instance methods)
|
108
111
|
MyMailer.welcome_many(users).deliver
|
109
112
|
```
|
110
113
|
|
114
|
+
This can be added anywhere like a Rails controller or Sinatra endpoint.
|
115
|
+
|
111
116
|
## Installation
|
112
117
|
|
113
118
|
You probably already know this bit:
|
114
119
|
|
115
120
|
gem 'resque' # Support for Sidekiq and writing custom adapters coming soon...
|
116
|
-
gem '
|
121
|
+
gem 'mandrill_queue'
|
117
122
|
|
118
123
|
but didn't know this (but it's optional):
|
119
124
|
|
@@ -151,23 +156,31 @@ end
|
|
151
156
|
|
152
157
|
## Setting up the worker
|
153
158
|
|
154
|
-
Run
|
159
|
+
Run the worker in the normal way:
|
155
160
|
|
161
|
+
# Resque
|
156
162
|
rake resque:work QUEUES=mailer
|
157
163
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
rake resque:work -r ./worker.rb QUEUES=mailer
|
164
|
+
# Sidekiq
|
165
|
+
sidekiq -q mailer
|
162
166
|
|
163
167
|
|
164
168
|
## Devise mailer integration
|
165
169
|
|
166
170
|
Since Mandrill_Queue quacks like ActionMailer where it counts, getting your Devise
|
167
|
-
mailers on Mandrill infrastructure is pretty easy.
|
171
|
+
mailers on Mandrill infrastructure is pretty easy.
|
172
|
+
|
173
|
+
Add the following to your devise initializer:
|
174
|
+
|
175
|
+
```ruby
|
176
|
+
config.mailer = 'DeviseMailer'
|
177
|
+
```
|
178
|
+
|
179
|
+
Here is my DeviseMailer implementation:
|
168
180
|
|
169
181
|
```ruby
|
170
|
-
|
182
|
+
# app/mailers/devise_mailer.rb
|
183
|
+
class DeviseMailer < MandrillQueue::Mailer
|
171
184
|
defaults do
|
172
185
|
message do
|
173
186
|
from_email Devise.mailer_sender
|
@@ -208,14 +221,15 @@ end
|
|
208
221
|
|
209
222
|
## TODO
|
210
223
|
|
211
|
-
1.
|
224
|
+
1. Render ActionView views to mailers.
|
212
225
|
2. Allow synchonous sending.
|
213
|
-
2. Render ActionView views to mailers.
|
214
226
|
|
215
227
|
## Contributing
|
216
228
|
|
217
229
|
1. Fork it
|
218
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
230
|
+
2. Create your feature branch (`git checkout -b feature/my-new-feature`)
|
219
231
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
220
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
232
|
+
4. Push to the branch (`git push origin feature/my-new-feature`)
|
221
233
|
5. Create new Pull Request
|
234
|
+
|
235
|
+
or use [Git Flow](https://github.com/nvie/gitflow)
|
data/lib/mandrill_queue.rb
CHANGED
@@ -15,41 +15,48 @@ module MandrillQueue
|
|
15
15
|
|
16
16
|
def self.defaults
|
17
17
|
{
|
18
|
-
message_defaults: {}
|
18
|
+
message_defaults: {},
|
19
|
+
adapter: :resque
|
19
20
|
}
|
20
21
|
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
23
|
+
def self.load_adapter(adapter)
|
24
|
+
if adapter.is_a?(Symbol)
|
25
|
+
require "mandrill_queue/adapters/#{adapter}_adapter"
|
26
|
+
"MandrillQueue::Adapters::#{adapter.to_s.camelize}Adapter".constantize.new
|
27
|
+
elsif adapter.is_a?(String)
|
28
|
+
adapter.constantize.new
|
29
|
+
else
|
30
|
+
adapter.try(:call) || adapter
|
31
|
+
end
|
32
|
+
end
|
25
33
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
# end
|
46
|
-
# end
|
34
|
+
def self.adapter
|
35
|
+
@_adapter ||= begin
|
36
|
+
unless adapter = configuration.adapter
|
37
|
+
adapter = :resque if defined(::Resque)
|
38
|
+
adapter = :sidekiq if defined(::Sidekiq)
|
39
|
+
if adapter.nil?
|
40
|
+
raise RuntimeError, <<-TXT.strip.tr("\t", '')
|
41
|
+
Worker adapter was not configured and cannot be determined.
|
42
|
+
Please include a worker gem in your Gemfile. Resque and Sidekiq are supported.
|
43
|
+
TXT
|
44
|
+
end
|
45
|
+
end
|
46
|
+
load_adapter(adapter)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.adapter=(adapter)
|
51
|
+
@_adapter = adapter.nil? ? nil : load_adapter(adapter)
|
52
|
+
end
|
47
53
|
|
48
54
|
def self.eager_load!
|
49
55
|
# No autoloads
|
50
56
|
end
|
51
57
|
|
52
58
|
def self.reset_config(&block)
|
59
|
+
self.adapter = nil
|
53
60
|
@configuration = nil
|
54
61
|
configure(&block) if block_given?
|
55
62
|
end
|
@@ -3,10 +3,8 @@ require 'stringio'
|
|
3
3
|
|
4
4
|
module MandrillQueue
|
5
5
|
module Logging
|
6
|
-
def
|
7
|
-
|
8
|
-
MandrillQueue.resque.constants.include?(:Logging) ? MandrillQueue.resque::Logging : nil
|
9
|
-
end
|
6
|
+
def logger
|
7
|
+
MandrillQueue.configuration.logger
|
10
8
|
end
|
11
9
|
|
12
10
|
def pretty(obj)
|
@@ -35,16 +33,16 @@ module MandrillQueue
|
|
35
33
|
result_formatter(r)
|
36
34
|
end
|
37
35
|
|
38
|
-
|
36
|
+
logger.debug <<-TXT.tr("\t", '')
|
39
37
|
\n*******************************************
|
40
38
|
#{formatted.join("\n")}
|
41
39
|
*******************************************
|
42
40
|
TXT
|
43
41
|
|
44
42
|
if errors.empty?
|
45
|
-
|
43
|
+
logger.info("#{result.count} message(s) successfully sent.")
|
46
44
|
else
|
47
|
-
|
45
|
+
logger.error("The following messages were not sent:\n#{errors.join("\n")}")
|
48
46
|
end
|
49
47
|
end
|
50
48
|
end
|
@@ -50,7 +50,7 @@ module MandrillQueue
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def message_defaults
|
53
|
-
md = configuration.message_defaults
|
53
|
+
md = configuration.message_defaults || {}
|
54
54
|
md.merge!(defaults[:message]) unless @_in_defaults || defaults[:message].nil?
|
55
55
|
md
|
56
56
|
end
|
@@ -133,7 +133,7 @@ module MandrillQueue
|
|
133
133
|
|
134
134
|
def deliver
|
135
135
|
validate!
|
136
|
-
MandrillQueue.
|
136
|
+
MandrillQueue.adapter.enqueue_to(queue, worker_class, to_hash)
|
137
137
|
end
|
138
138
|
|
139
139
|
def to_hash(options = {})
|
@@ -6,8 +6,9 @@ require 'mandrill_queue/logging'
|
|
6
6
|
module MandrillQueue
|
7
7
|
class Worker
|
8
8
|
include MandrillApi
|
9
|
-
|
9
|
+
include Logging
|
10
10
|
extend Hooks
|
11
|
+
include Sidekiq::Worker if defined?(Sidekiq)
|
11
12
|
|
12
13
|
def ip_pool
|
13
14
|
"Default Pool"
|
@@ -15,31 +16,31 @@ module MandrillQueue
|
|
15
16
|
|
16
17
|
def perform(data)
|
17
18
|
@_mailer = Mailer.new(data)
|
18
|
-
|
19
|
+
logger.debug("Got mailer data: #{pretty(@_mailer.to_hash)}")
|
19
20
|
|
20
21
|
message = @_mailer.message.load_attachments!.to_hash
|
21
22
|
template = @_mailer.template
|
22
23
|
send_at = @_mailer.send_at
|
23
24
|
|
24
|
-
if template.nil?
|
25
|
+
result = if template.nil?
|
25
26
|
mandrill.messages.send(message, false, ip_pool, send_at)
|
26
27
|
else
|
27
28
|
content = @_mailer.content.to_key_value_array
|
28
29
|
mandrill.messages.send_template(template, content, message, ip_pool, send_at)
|
29
30
|
end
|
31
|
+
rescue Mandrill::Error => e
|
32
|
+
logger.error("A mandrill error occurred: #{e.class} - #{e.message}")
|
33
|
+
raise
|
34
|
+
else
|
35
|
+
if result.nil?
|
36
|
+
logger.error("No messages sent!")
|
37
|
+
else
|
38
|
+
log_results(result)
|
39
|
+
end
|
30
40
|
end
|
31
41
|
|
32
42
|
def self.perform(*args)
|
33
|
-
|
34
|
-
rescue Mandrill::Error => e
|
35
|
-
logging.error("A mandrill error occurred: #{e.class} - #{e.message}")
|
36
|
-
raise
|
37
|
-
else
|
38
|
-
if !result.empty?
|
39
|
-
log_results(result)
|
40
|
-
else
|
41
|
-
logging.error("No messages sent!")
|
42
|
-
end
|
43
|
+
new.perform(*args)
|
43
44
|
end
|
44
45
|
|
45
46
|
end
|
@@ -18,15 +18,23 @@ MandrillQueue.configure do |config|
|
|
18
18
|
# }
|
19
19
|
# config.message_defaults = {}
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
# Change to your prefered queue (adapter)
|
22
|
+
# Adapters should respond to :enqueue_to
|
23
|
+
# Valid values are:
|
24
|
+
# * :resque (default)
|
25
|
+
# * :sidekiq
|
26
|
+
# * anything that responds to call, return value is used as the adapter
|
27
|
+
# * Class name in string format (e.g. adapter sitting in lib/)
|
28
|
+
# * Any object that responds to :enqueue_to with arity > 1
|
29
|
+
# config.adapter = MyOwnQueuer
|
23
30
|
|
24
31
|
# Allows you to use your own worker for processing the mandrill
|
25
32
|
# queue. This can be overriden at the class level.
|
26
33
|
# config.default_worker_class = MyWorker
|
27
34
|
|
28
35
|
# Allows you to override the queue name used to enqueue
|
29
|
-
# to
|
36
|
+
# to the background queue. This can be overriden at the
|
37
|
+
# class level.
|
30
38
|
# Defaults to :mailer
|
31
39
|
# config.default_queue = :another_queue
|
32
40
|
|
metadata
CHANGED
@@ -1,144 +1,189 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: mandrill_queue
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Stan Bondi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2014-04-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
15
14
|
name: activesupport
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Version
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
21
19
|
version: 4.0.0
|
22
20
|
type: :runtime
|
23
|
-
version_requirements: *id001
|
24
|
-
- !ruby/object:Gem::Dependency
|
25
|
-
name: mandrill-api
|
26
21
|
prerelease: false
|
27
|
-
|
28
|
-
requirements:
|
29
|
-
- - "
|
30
|
-
- !ruby/object:Gem::Version
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mandrill-api
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
31
33
|
version: 1.0.49
|
32
34
|
type: :runtime
|
33
|
-
version_requirements: *id002
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: bundler
|
36
35
|
prerelease: false
|
37
|
-
|
38
|
-
requirements:
|
39
|
-
- -
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.49
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
42
48
|
type: :development
|
43
|
-
version_requirements: *id003
|
44
|
-
- !ruby/object:Gem::Dependency
|
45
|
-
name: rake
|
46
49
|
prerelease: false
|
47
|
-
|
48
|
-
requirements:
|
49
|
-
-
|
50
|
-
-
|
51
|
-
|
52
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
53
62
|
type: :development
|
54
|
-
|
55
|
-
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
56
70
|
name: timecop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
57
77
|
prerelease: false
|
58
|
-
|
59
|
-
requirements:
|
60
|
-
-
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec-mocks
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
61
90
|
type: :development
|
62
|
-
version_requirements: *id006
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
name: factory_girl
|
65
91
|
prerelease: false
|
66
|
-
|
67
|
-
requirements:
|
68
|
-
-
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: factory_girl
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
69
104
|
type: :development
|
70
|
-
version_requirements: *id007
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: faker
|
73
105
|
prerelease: false
|
74
|
-
|
75
|
-
requirements:
|
76
|
-
-
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: faker
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
77
118
|
type: :development
|
78
|
-
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
79
125
|
description: An easy to use DSL to send mailers using Mailchimps Mandrill api.
|
80
|
-
email:
|
126
|
+
email:
|
81
127
|
- stan@fixate.it
|
82
128
|
executables: []
|
83
|
-
|
84
129
|
extensions: []
|
85
|
-
|
86
130
|
extra_rdoc_files: []
|
87
|
-
|
88
|
-
|
131
|
+
files:
|
132
|
+
- Gemfile
|
133
|
+
- Guardfile
|
134
|
+
- LICENSE.txt
|
135
|
+
- README.md
|
136
|
+
- Rakefile
|
89
137
|
- lib/mandrill_queue.rb
|
90
|
-
- lib/mandrill_queue/
|
91
|
-
- lib/mandrill_queue/
|
138
|
+
- lib/mandrill_queue/adapters/resque_adapter.rb
|
139
|
+
- lib/mandrill_queue/adapters/sidekiq_adapter.rb
|
92
140
|
- lib/mandrill_queue/array_metadata.rb
|
93
|
-
- lib/mandrill_queue/worker.rb
|
94
|
-
- lib/mandrill_queue/variables.rb
|
95
|
-
- lib/mandrill_queue/version.rb
|
96
|
-
- lib/mandrill_queue/mailer.rb
|
97
141
|
- lib/mandrill_queue/configuration.rb
|
98
|
-
- lib/mandrill_queue/
|
142
|
+
- lib/mandrill_queue/core_ext.rb
|
143
|
+
- lib/mandrill_queue/errors.rb
|
99
144
|
- lib/mandrill_queue/logging.rb
|
145
|
+
- lib/mandrill_queue/mailer.rb
|
146
|
+
- lib/mandrill_queue/mandrill_api.rb
|
100
147
|
- lib/mandrill_queue/message.rb
|
101
|
-
- lib/mandrill_queue/core_ext.rb
|
102
|
-
- lib/rails/generators/mandrill_queue/initializer_generator.rb
|
103
|
-
- lib/rails/generators/mandrill_queue/worker_generator.rb
|
104
|
-
- lib/rails/generators/mandrill_queue/templates/initializer.rb
|
105
|
-
- lib/rails/generators/mandrill_queue/templates/worker/worker.rb
|
106
|
-
- lib/mandrill_queue/worker/hooks.rb
|
107
|
-
- lib/mandrill_queue/message/merge_vars.rb
|
108
|
-
- lib/mandrill_queue/message/recipients.rb
|
109
148
|
- lib/mandrill_queue/message/attachments.rb
|
110
149
|
- lib/mandrill_queue/message/images.rb
|
150
|
+
- lib/mandrill_queue/message/merge_vars.rb
|
111
151
|
- lib/mandrill_queue/message/recipient/data.rb
|
112
|
-
- lib/mandrill_queue/message/recipient/variable.rb
|
113
|
-
- lib/mandrill_queue/message/recipient/metadata.rb
|
114
152
|
- lib/mandrill_queue/message/recipient/helpers.rb
|
115
|
-
-
|
116
|
-
-
|
117
|
-
-
|
118
|
-
-
|
119
|
-
-
|
153
|
+
- lib/mandrill_queue/message/recipient/metadata.rb
|
154
|
+
- lib/mandrill_queue/message/recipient/variable.rb
|
155
|
+
- lib/mandrill_queue/message/recipients.rb
|
156
|
+
- lib/mandrill_queue/railtie.rb
|
157
|
+
- lib/mandrill_queue/variables.rb
|
158
|
+
- lib/mandrill_queue/version.rb
|
159
|
+
- lib/mandrill_queue/worker.rb
|
160
|
+
- lib/mandrill_queue/worker/hooks.rb
|
161
|
+
- lib/rails/generators/mandrill_queue/initializer_generator.rb
|
162
|
+
- lib/rails/generators/mandrill_queue/templates/initializer.rb
|
163
|
+
- lib/rails/generators/mandrill_queue/templates/worker/worker.rb
|
164
|
+
- lib/rails/generators/mandrill_queue/worker_generator.rb
|
120
165
|
homepage: https://github.com/fixate/mandrill_queue/
|
121
|
-
licenses:
|
166
|
+
licenses:
|
122
167
|
- MIT
|
123
168
|
metadata: {}
|
124
|
-
|
125
169
|
post_install_message:
|
126
170
|
rdoc_options: []
|
127
|
-
|
128
|
-
require_paths:
|
171
|
+
require_paths:
|
129
172
|
- lib
|
130
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
-
requirements:
|
132
|
-
-
|
133
|
-
|
134
|
-
|
135
|
-
|
173
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - ">="
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '0'
|
136
183
|
requirements: []
|
137
|
-
|
138
184
|
rubyforge_project:
|
139
|
-
rubygems_version: 2.
|
185
|
+
rubygems_version: 2.2.0
|
140
186
|
signing_key:
|
141
187
|
specification_version: 4
|
142
188
|
summary: Use MailChimps Mandrill to send mailers through a background worker queue.
|
143
189
|
test_files: []
|
144
|
-
|