resque_mailer 2.2.6 → 2.4.3
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 +32 -4
- data/LICENSE +1 -1
- data/README.md +59 -37
- data/lib/resque_mailer/serializers/active_record_serializer.rb +29 -0
- data/lib/resque_mailer/serializers/pass_thru_serializer.rb +23 -0
- data/lib/resque_mailer/version.rb +1 -1
- data/lib/resque_mailer.rb +43 -20
- metadata +35 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 548d9708f6b7a14a37327ffb46f45576582ec6bf
|
|
4
|
+
data.tar.gz: 9e8be7d64d9ec61fe8b5448a1b7e5ab79ceb47a0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 94c591b3103a3f56ba56243da5858cd18ef6666dfe15018298081d93de71e270426e76985f6fd4a62fbb1a8d1a13ad76a50404c8045261c5b185e94d74d882ee
|
|
7
|
+
data.tar.gz: 9f580508433f12a0c4ab1ba66ccbda30efd4e23cc27e82b5e6abe3183c8b4b32fa80d366e3939447f31407725c43c621652ed19f801b755b40e7b31c3c87f61a
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
|
-
###
|
|
2
|
-
*
|
|
1
|
+
### 2.4.3 / 2017-09-18
|
|
2
|
+
* Fix for duplicated keys (J Garcia)
|
|
3
|
+
|
|
4
|
+
### 2.4.2 / 2017-01-30
|
|
5
|
+
* Fix for breaking change with symbolied keys vs strings (J Garcia)
|
|
6
|
+
|
|
7
|
+
### 2.4.1 / 2016-12-10
|
|
8
|
+
* Symbolize argument keys to fix mailer block syntax issues (J Garcia)
|
|
9
|
+
* Alias method for `deliver_now` (Kurt Funai)
|
|
10
|
+
|
|
11
|
+
### 2.4.0 / 2016-10-05
|
|
12
|
+
* Rails 5 compatibility
|
|
13
|
+
|
|
14
|
+
### 2.3.1 / 2016-07-03
|
|
15
|
+
* Serializer bugfix for scheduler integration
|
|
16
|
+
* RSpec cleanup
|
|
17
|
+
|
|
18
|
+
### 2.3.0 / 2016-04-30
|
|
19
|
+
* Convert specs to use modern RSpec expectation syntax
|
|
20
|
+
* Added argument serializers (Andrew DiMichele, René Klačan, Adam Bird)
|
|
21
|
+
* ActiveRecord argument serializer (René Klačan)
|
|
22
|
+
* Use `deliver_now` if available
|
|
23
|
+
* Remove deprecated fallback / error options in prep for 2.3.x
|
|
24
|
+
|
|
25
|
+
### 2.2.7 / 2014-10-08
|
|
26
|
+
* Pass respond_to? inquiries through to decoy (to allow preview, etc)
|
|
27
|
+
(Ian Lesperance)
|
|
28
|
+
|
|
29
|
+
### 2.2.6 / 2013-11-13
|
|
30
|
+
* Add action and args as arguments to the error handler lambda for
|
|
3
31
|
requeuing (Ellis Berner, Austen Ito)
|
|
4
32
|
* Redis client v3 support; fix unhandled exception when offline
|
|
5
33
|
(Yoav Matchulsky)
|
|
@@ -7,13 +35,13 @@
|
|
|
7
35
|
### 2.2.5 / 2013-10-10
|
|
8
36
|
* Travis Integration (Peter Goldstein)
|
|
9
37
|
* ActionMailer 4.0 test compatibility (Peter Goldstein)
|
|
10
|
-
* Added `unschedule_delivery` method for resque-scheduler integration
|
|
38
|
+
* Added `unschedule_delivery` method for resque-scheduler integration
|
|
11
39
|
(gsdean)
|
|
12
40
|
|
|
13
41
|
### 2.2.4 / 2013-05-25
|
|
14
42
|
* Compatibility for Rails 4 pre-release (Ben Woosley)
|
|
15
43
|
* Fallback to synchronous is default when connection to Redis fails
|
|
16
|
-
* Avoid lazy evaluation of mail when excluded, for use with mail_view
|
|
44
|
+
* Avoid lazy evaluation of mail when excluded, for use with mail_view
|
|
17
45
|
(gingerlime)
|
|
18
46
|
|
|
19
47
|
### 2.2.3 / 2013-02-27
|
data/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -6,7 +6,7 @@ A gem plugin which allows messages prepared by ActionMailer to be delivered
|
|
|
6
6
|
asynchronously. Assumes you're using [Resque](https://github.com/resque/resque)
|
|
7
7
|
for your background jobs.
|
|
8
8
|
|
|
9
|
-
Note that recent (2.0+) versions of Resque::Mailer only work with Rails 3.x or
|
|
9
|
+
Note that recent (2.0+) versions of Resque::Mailer only work with Rails 3.x or later.
|
|
10
10
|
For a version compatible with Rails 2, specify v1.x in your Gemfile.
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
@@ -24,13 +24,15 @@ If you're using Bundler to manage your dependencies, you should add it to your G
|
|
|
24
24
|
|
|
25
25
|
Include Resque::Mailer in your ActionMailer subclass(es) like this:
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
```ruby
|
|
28
|
+
class MyMailer < ActionMailer::Base
|
|
29
|
+
include Resque::Mailer
|
|
30
|
+
end
|
|
31
|
+
```
|
|
30
32
|
|
|
31
33
|
Now, when `MyMailer.subject_email(params).deliver` is called, an entry
|
|
32
34
|
will be created in the job queue. Your Resque workers will be able to deliver
|
|
33
|
-
this message for you. The queue we're using is imaginatively named
|
|
35
|
+
this message for you. The queue we're using is imaginatively named `mailer`,
|
|
34
36
|
so just make sure your workers know about it and are loading your environment:
|
|
35
37
|
|
|
36
38
|
QUEUE=mailer rake environment resque:work
|
|
@@ -38,19 +40,24 @@ so just make sure your workers know about it and are loading your environment:
|
|
|
38
40
|
Note that you can still have mail delivered synchronously by using the bang
|
|
39
41
|
method variant:
|
|
40
42
|
|
|
41
|
-
|
|
43
|
+
```ruby
|
|
44
|
+
MyMailer.subject_email(params).deliver!
|
|
45
|
+
```
|
|
42
46
|
|
|
43
47
|
Oh, by the way. Don't forget that **your async mailer jobs will be processed by
|
|
44
48
|
a separate worker**. This means that you should resist the temptation to pass
|
|
45
49
|
database-backed objects as parameters in your mailer and instead pass record
|
|
46
50
|
identifiers. Then, in your delivery method, you can look up the record from
|
|
47
|
-
the id and use it as needed.
|
|
51
|
+
the id and use it as needed. If you'd like, you can write your own serializer
|
|
52
|
+
to automate such things; see the section on serializers below.
|
|
48
53
|
|
|
49
54
|
If you want to set a different default queue name for your mailer, you can
|
|
50
55
|
change the `default_queue_name` property like so:
|
|
51
56
|
|
|
52
|
-
|
|
53
|
-
|
|
57
|
+
```ruby
|
|
58
|
+
# config/initializers/resque_mailer.rb
|
|
59
|
+
Resque::Mailer.default_queue_name = 'application_specific_mailer'
|
|
60
|
+
```
|
|
54
61
|
|
|
55
62
|
This is useful when you are running more than one application using
|
|
56
63
|
resque_mailer in a shared environment. You will need to use the new queue
|
|
@@ -59,9 +66,8 @@ name when starting your workers.
|
|
|
59
66
|
QUEUE=application_specific_mailer rake environment resque:work
|
|
60
67
|
|
|
61
68
|
Custom handling of errors that arise when sending a message is possible by
|
|
62
|
-
assigning a lambda to the `
|
|
63
|
-
|
|
64
|
-
There are two supported lambdas for backwards compatiability:
|
|
69
|
+
assigning a lambda to the `error_handler` attribute. There are two supported
|
|
70
|
+
lambdas for backwards compatiability.
|
|
65
71
|
|
|
66
72
|
The first lamba will be deprecated in a future release:
|
|
67
73
|
|
|
@@ -77,10 +83,10 @@ mailers to be requeued on failure:
|
|
|
77
83
|
```ruby
|
|
78
84
|
Resque::Mailer.error_handler = lambda { |mailer, message, error, action, args|
|
|
79
85
|
# Necessary to re-enqueue jobs that receieve the SIGTERM signal
|
|
80
|
-
if
|
|
86
|
+
if error.is_a?(Resque::TermException)
|
|
81
87
|
Resque.enqueue(mailer, action, *args)
|
|
82
88
|
else
|
|
83
|
-
raise
|
|
89
|
+
raise error
|
|
84
90
|
end
|
|
85
91
|
}
|
|
86
92
|
```
|
|
@@ -90,18 +96,32 @@ Resque::Mailer.error_handler = lambda { |mailer, message, error, action, args|
|
|
|
90
96
|
If you have a variety of mailers in your application and want all of them to use
|
|
91
97
|
Resque::Mailer by default, you can subclass ActionMailer::Base and have your
|
|
92
98
|
other mailers inherit from an AsyncMailer:
|
|
99
|
+
```ruby
|
|
100
|
+
# config/initializers/resque_mailer.rb
|
|
101
|
+
class AsyncMailer < ActionMailer::Base
|
|
102
|
+
include Resque::Mailer
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# app/mailers/example_mailer.rb
|
|
106
|
+
class ExampleMailer < AsyncMailer
|
|
107
|
+
def say_hello(user_id)
|
|
108
|
+
# ...
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Writing an Argument Serializer
|
|
93
114
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
115
|
+
By default, the arguments you pass to your mailer are passed as-is to Resque. This
|
|
116
|
+
means you cannot pass things like database-backed objects. If you'd like to write
|
|
117
|
+
your own serializer to enable such things, simply write a class that implements
|
|
118
|
+
the class methods `self.serialize(*args)` and `self.deserialize(data)` and set
|
|
119
|
+
`Resque::Mailer.argument_serializer = YourSerializerClass` in your resque_mailer
|
|
120
|
+
initializer.
|
|
98
121
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
# ...
|
|
103
|
-
end
|
|
104
|
-
end
|
|
122
|
+
There's also Active Record serializer which allows you to pass AR
|
|
123
|
+
models directly as arguments. To use it just do:
|
|
124
|
+
`Resque::Mailer.argument_serializer = Resque::Mailer::Serializers::ActiveRecordSerializer`
|
|
105
125
|
|
|
106
126
|
### Using with Resque Scheduler
|
|
107
127
|
|
|
@@ -109,27 +129,29 @@ If [resque-scheduler](https://github.com/bvandenbos/resque-scheduler) is
|
|
|
109
129
|
installed, two extra methods will be available: `deliver_at` and `deliver_in`.
|
|
110
130
|
These will enqueue mail for delivery at a specified time in the future.
|
|
111
131
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
# Delivers in 7 days
|
|
116
|
-
MyMailer.reminder_email(params).deliver_in(7.days)
|
|
132
|
+
```ruby
|
|
133
|
+
# Delivers on the 25th of December, 2014
|
|
134
|
+
MyMailer.reminder_email(params).deliver_at(Time.parse('2014-12-25'))
|
|
117
135
|
|
|
118
|
-
|
|
119
|
-
|
|
136
|
+
# Delivers in 7 days
|
|
137
|
+
MyMailer.reminder_email(params).deliver_in(7.days)
|
|
120
138
|
|
|
139
|
+
# Unschedule delivery
|
|
140
|
+
MyMailer.reminder_email(params).unschedule_delivery
|
|
141
|
+
```
|
|
121
142
|
## Testing
|
|
122
143
|
|
|
123
144
|
You don't want to be sending actual emails in the test environment, so you can
|
|
124
145
|
configure the environments that should be excluded like so:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
146
|
+
```ruby
|
|
147
|
+
# config/initializers/resque_mailer.rb
|
|
148
|
+
Resque::Mailer.excluded_environments = [:test, :cucumber]
|
|
149
|
+
```
|
|
128
150
|
|
|
129
151
|
Note: Define `current_env` if using Resque::Mailer in a non-Rails project:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
152
|
+
```ruby
|
|
153
|
+
Resque::Mailer.current_env = :production
|
|
154
|
+
```
|
|
133
155
|
|
|
134
156
|
## Note on Patches / Pull Requests
|
|
135
157
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Resque
|
|
2
|
+
module Mailer
|
|
3
|
+
module Serializers
|
|
4
|
+
module ActiveRecordSerializer
|
|
5
|
+
extend self
|
|
6
|
+
|
|
7
|
+
def serialize(*args)
|
|
8
|
+
args.map do |arg|
|
|
9
|
+
if arg.is_a?(ActiveRecord::Base)
|
|
10
|
+
{ "class_name" => arg.class.name, "id" => arg.id }
|
|
11
|
+
else
|
|
12
|
+
arg
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def deserialize(data)
|
|
18
|
+
data.map do |arg|
|
|
19
|
+
if arg.is_a?(Hash) && arg.has_key?("class_name") && arg.has_key?("id")
|
|
20
|
+
arg["class_name"].constantize.find(arg["id"])
|
|
21
|
+
else
|
|
22
|
+
arg
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Resque
|
|
2
|
+
module Mailer
|
|
3
|
+
module Serializers
|
|
4
|
+
|
|
5
|
+
# Simple serializer for Resque arguments
|
|
6
|
+
# New serializers need only implement the self.serialize(*args) and self.deserialize(data)
|
|
7
|
+
# * self.serialize(*args) should return the arguments serialized as an object
|
|
8
|
+
# * self.deserialize(data) should take the serialized object as its only argument and return the array of arguments
|
|
9
|
+
|
|
10
|
+
module PassThruSerializer
|
|
11
|
+
extend self
|
|
12
|
+
|
|
13
|
+
def serialize(*args)
|
|
14
|
+
args
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def deserialize(data)
|
|
18
|
+
data
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
data/lib/resque_mailer.rb
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
require 'resque_mailer/version'
|
|
2
|
+
require 'resque_mailer/serializers/pass_thru_serializer'
|
|
3
|
+
require 'resque_mailer/serializers/active_record_serializer'
|
|
4
|
+
require 'active_support/core_ext/hash'
|
|
2
5
|
|
|
3
6
|
module Resque
|
|
4
7
|
module Mailer
|
|
5
8
|
class << self
|
|
6
9
|
attr_accessor :default_queue_name, :default_queue_target, :current_env, :logger, :error_handler
|
|
10
|
+
attr_accessor :argument_serializer
|
|
7
11
|
attr_reader :excluded_environments
|
|
8
12
|
|
|
9
13
|
def excluded_environments=(envs)
|
|
10
14
|
@excluded_environments = [*envs].map { |e| e.to_sym }
|
|
11
15
|
end
|
|
12
16
|
|
|
13
|
-
def
|
|
14
|
-
|
|
17
|
+
def prepare_message(klass, action, *args)
|
|
18
|
+
msg = klass.send(:new)
|
|
19
|
+
msg.process(action, *args)
|
|
20
|
+
msg.message
|
|
15
21
|
end
|
|
16
22
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
warn "WARNING: fallback_to_synchronous option is deprecated and will be removed in the next release"
|
|
23
|
+
def included(base)
|
|
24
|
+
base.extend(ClassMethods)
|
|
20
25
|
end
|
|
21
26
|
end
|
|
22
27
|
|
|
@@ -24,6 +29,7 @@ module Resque
|
|
|
24
29
|
self.default_queue_target = ::Resque
|
|
25
30
|
self.default_queue_name = "mailer"
|
|
26
31
|
self.excluded_environments = [:test]
|
|
32
|
+
self.argument_serializer = ::Resque::Mailer::Serializers::PassThruSerializer
|
|
27
33
|
|
|
28
34
|
module ClassMethods
|
|
29
35
|
|
|
@@ -43,18 +49,24 @@ module Resque
|
|
|
43
49
|
end
|
|
44
50
|
end
|
|
45
51
|
|
|
46
|
-
def perform(action,
|
|
52
|
+
def perform(action, serialized_args)
|
|
47
53
|
begin
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
args = ::Resque::Mailer.argument_serializer.deserialize(serialized_args)
|
|
55
|
+
# Set hash as hash with indifferent access so mailer block syntax (needs symbols) works
|
|
56
|
+
if args.is_a?(Array)
|
|
57
|
+
args = args.each_with_object([]) do |arg, o|
|
|
58
|
+
o << (arg.is_a?(Hash) ? arg.with_indifferent_access : arg)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
message = ::Resque::Mailer.prepare_message(self, action, *args)
|
|
62
|
+
if message.respond_to?(:deliver_now)
|
|
63
|
+
message.deliver_now
|
|
64
|
+
else
|
|
65
|
+
message.deliver
|
|
66
|
+
end
|
|
50
67
|
rescue Exception => ex
|
|
51
68
|
if Mailer.error_handler
|
|
52
|
-
|
|
53
|
-
warn "WARNING: error handlers with 3 arguments are deprecated and will be removed in the next release"
|
|
54
|
-
Mailer.error_handler.call(self, message, ex)
|
|
55
|
-
else
|
|
56
|
-
Mailer.error_handler.call(self, message, ex, action, args)
|
|
57
|
-
end
|
|
69
|
+
Mailer.error_handler.call(self, message, ex, action, args)
|
|
58
70
|
else
|
|
59
71
|
if logger
|
|
60
72
|
logger.error "Unable to deliver email [#{action}]: #{ex}"
|
|
@@ -94,6 +106,7 @@ module Resque
|
|
|
94
106
|
@mailer_class = mailer_class
|
|
95
107
|
@method_name = method_name
|
|
96
108
|
*@args = *args
|
|
109
|
+
@serialized_args = ::Resque::Mailer.argument_serializer.serialize(*args)
|
|
97
110
|
actual_message if environment_excluded?
|
|
98
111
|
end
|
|
99
112
|
|
|
@@ -118,7 +131,7 @@ module Resque
|
|
|
118
131
|
end
|
|
119
132
|
|
|
120
133
|
def actual_message
|
|
121
|
-
@actual_message ||= @mailer_class
|
|
134
|
+
@actual_message ||= ::Resque::Mailer.prepare_message(@mailer_class, @method_name, *@args)
|
|
122
135
|
end
|
|
123
136
|
|
|
124
137
|
def deliver
|
|
@@ -126,13 +139,14 @@ module Resque
|
|
|
126
139
|
|
|
127
140
|
if @mailer_class.deliver?
|
|
128
141
|
begin
|
|
129
|
-
resque.enqueue(@mailer_class, @method_name,
|
|
142
|
+
resque.enqueue(@mailer_class, @method_name, @serialized_args)
|
|
130
143
|
rescue Errno::ECONNREFUSED, Redis::CannotConnectError
|
|
131
144
|
logger.error "Unable to connect to Redis; falling back to synchronous mail delivery" if logger
|
|
132
145
|
deliver!
|
|
133
146
|
end
|
|
134
147
|
end
|
|
135
148
|
end
|
|
149
|
+
alias_method :deliver_now, :deliver
|
|
136
150
|
|
|
137
151
|
def deliver_at(time)
|
|
138
152
|
return deliver! if environment_excluded?
|
|
@@ -142,7 +156,7 @@ module Resque
|
|
|
142
156
|
end
|
|
143
157
|
|
|
144
158
|
if @mailer_class.deliver?
|
|
145
|
-
resque.enqueue_at(time, @mailer_class, @method_name,
|
|
159
|
+
resque.enqueue_at(time, @mailer_class, @method_name, @serialized_args)
|
|
146
160
|
end
|
|
147
161
|
end
|
|
148
162
|
|
|
@@ -154,7 +168,7 @@ module Resque
|
|
|
154
168
|
end
|
|
155
169
|
|
|
156
170
|
if @mailer_class.deliver?
|
|
157
|
-
resque.enqueue_in(time, @mailer_class, @method_name,
|
|
171
|
+
resque.enqueue_in(time, @mailer_class, @method_name, @serialized_args)
|
|
158
172
|
end
|
|
159
173
|
end
|
|
160
174
|
|
|
@@ -163,17 +177,26 @@ module Resque
|
|
|
163
177
|
raise "You need to install resque-scheduler to use unschedule_delivery"
|
|
164
178
|
end
|
|
165
179
|
|
|
166
|
-
resque.remove_delayed(@mailer_class, @method_name,
|
|
180
|
+
resque.remove_delayed(@mailer_class, @method_name, @serialized_args)
|
|
167
181
|
end
|
|
168
182
|
|
|
169
183
|
def deliver!
|
|
170
|
-
actual_message.
|
|
184
|
+
if actual_message.respond_to?(:deliver_now)
|
|
185
|
+
actual_message.deliver_now
|
|
186
|
+
else
|
|
187
|
+
actual_message.deliver
|
|
188
|
+
end
|
|
171
189
|
end
|
|
190
|
+
alias_method :deliver_now!, :deliver!
|
|
172
191
|
|
|
173
192
|
def method_missing(method_name, *args)
|
|
174
193
|
actual_message.send(method_name, *args)
|
|
175
194
|
end
|
|
176
195
|
|
|
196
|
+
def respond_to?(method_name, *args)
|
|
197
|
+
super || actual_message.respond_to?(method_name, *args)
|
|
198
|
+
end
|
|
199
|
+
|
|
177
200
|
def logger
|
|
178
201
|
@mailer_class.logger
|
|
179
202
|
end
|
metadata
CHANGED
|
@@ -1,55 +1,69 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: resque_mailer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.4.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nick Plante
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-09-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: activesupport
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '3.0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '3.0'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: actionmailer
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
16
30
|
requirements:
|
|
17
|
-
- -
|
|
31
|
+
- - ">="
|
|
18
32
|
- !ruby/object:Gem::Version
|
|
19
33
|
version: '3.0'
|
|
20
34
|
type: :runtime
|
|
21
35
|
prerelease: false
|
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
37
|
requirements:
|
|
24
|
-
- -
|
|
38
|
+
- - ">="
|
|
25
39
|
- !ruby/object:Gem::Version
|
|
26
40
|
version: '3.0'
|
|
27
41
|
- !ruby/object:Gem::Dependency
|
|
28
42
|
name: rspec
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
|
30
44
|
requirements:
|
|
31
|
-
- - ~>
|
|
45
|
+
- - "~>"
|
|
32
46
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
47
|
+
version: '3.5'
|
|
34
48
|
type: :development
|
|
35
49
|
prerelease: false
|
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
51
|
requirements:
|
|
38
|
-
- - ~>
|
|
52
|
+
- - "~>"
|
|
39
53
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
54
|
+
version: '3.5'
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
56
|
name: yard
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
44
58
|
requirements:
|
|
45
|
-
- -
|
|
59
|
+
- - ">="
|
|
46
60
|
- !ruby/object:Gem::Version
|
|
47
61
|
version: 0.6.0
|
|
48
62
|
type: :development
|
|
49
63
|
prerelease: false
|
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
65
|
requirements:
|
|
52
|
-
- -
|
|
66
|
+
- - ">="
|
|
53
67
|
- !ruby/object:Gem::Version
|
|
54
68
|
version: 0.6.0
|
|
55
69
|
description: Rails plugin for sending asynchronous email with ActionMailer and Resque.
|
|
@@ -62,13 +76,16 @@ extra_rdoc_files:
|
|
|
62
76
|
- CHANGELOG.md
|
|
63
77
|
- README.md
|
|
64
78
|
files:
|
|
65
|
-
- lib/resque_mailer/version.rb
|
|
66
|
-
- lib/resque_mailer.rb
|
|
67
|
-
- README.md
|
|
68
|
-
- LICENSE
|
|
69
79
|
- CHANGELOG.md
|
|
80
|
+
- LICENSE
|
|
81
|
+
- README.md
|
|
82
|
+
- lib/resque_mailer.rb
|
|
83
|
+
- lib/resque_mailer/serializers/active_record_serializer.rb
|
|
84
|
+
- lib/resque_mailer/serializers/pass_thru_serializer.rb
|
|
85
|
+
- lib/resque_mailer/version.rb
|
|
70
86
|
homepage: http://github.com/zapnap/resque_mailer
|
|
71
|
-
licenses:
|
|
87
|
+
licenses:
|
|
88
|
+
- MIT
|
|
72
89
|
metadata: {}
|
|
73
90
|
post_install_message:
|
|
74
91
|
rdoc_options: []
|
|
@@ -76,19 +93,18 @@ require_paths:
|
|
|
76
93
|
- lib
|
|
77
94
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
78
95
|
requirements:
|
|
79
|
-
- -
|
|
96
|
+
- - ">="
|
|
80
97
|
- !ruby/object:Gem::Version
|
|
81
98
|
version: '0'
|
|
82
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
100
|
requirements:
|
|
84
|
-
- -
|
|
101
|
+
- - ">="
|
|
85
102
|
- !ruby/object:Gem::Version
|
|
86
103
|
version: '0'
|
|
87
104
|
requirements: []
|
|
88
105
|
rubyforge_project:
|
|
89
|
-
rubygems_version: 2.
|
|
106
|
+
rubygems_version: 2.6.13
|
|
90
107
|
signing_key:
|
|
91
108
|
specification_version: 4
|
|
92
109
|
summary: Rails plugin for sending asynchronous email with ActionMailer and Resque.
|
|
93
110
|
test_files: []
|
|
94
|
-
has_rdoc:
|