qe 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +5 -1
- data/Gemfile.lock +56 -53
- data/README.md +35 -0
- data/examples/workers.rb +2 -3
- data/lib/qe.rb +3 -0
- data/lib/qe/action_mailer.rb +22 -0
- data/lib/qe/version.rb +1 -1
- data/lib/qe/worker/instance_methods.rb +1 -1
- data/qe.gemspec +2 -0
- data/spec/qe/action_mailer_spec.rb +59 -0
- data/spec/qe/beanstalk_spec.rb +2 -2
- data/spec/qe/delayed_job_spec.rb +4 -4
- data/spec/qe/immediate_spec.rb +1 -1
- data/spec/qe/locale_spec.rb +1 -1
- data/spec/qe/qu_spec.rb +2 -2
- data/spec/qe/resque_spec.rb +2 -2
- data/spec/qe/sidekiq_spec.rb +2 -2
- data/spec/qe/worker_spec.rb +12 -5
- data/spec/spec_helper.rb +1 -2
- metadata +45 -53
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 24925d0691189b9630c57dbce7ee24f17107fb6c
|
4
|
+
data.tar.gz: cb621b8762de804d541ae375627c31201127fadc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d4ca40ca8191277537bddef4fd7b29c0403d9cec5bdc3d30b2c3b07a8a9cf80b784d880fa7e022452ba28aafe0cda609a1b1fbc7eba9b9d4d71824ef3927df41
|
7
|
+
data.tar.gz: 91de3e84a38b61d045ccd3265a6e34d60a24c298498660e56986a3da0f43dc4cf8337ec2974d80543e7af843584f07a2eb0c3191076f7c78a6974c417ca51f0f
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,91 +1,93 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
qe (0.
|
4
|
+
qe (0.3.0)
|
5
|
+
activesupport
|
5
6
|
|
6
7
|
GEM
|
7
|
-
remote:
|
8
|
+
remote: https://rubygems.org/
|
8
9
|
specs:
|
9
|
-
activemodel (3.2.
|
10
|
-
activesupport (= 3.2.
|
10
|
+
activemodel (3.2.13)
|
11
|
+
activesupport (= 3.2.13)
|
11
12
|
builder (~> 3.0.0)
|
12
|
-
activerecord (3.2.
|
13
|
-
activemodel (= 3.2.
|
14
|
-
activesupport (= 3.2.
|
13
|
+
activerecord (3.2.13)
|
14
|
+
activemodel (= 3.2.13)
|
15
|
+
activesupport (= 3.2.13)
|
15
16
|
arel (~> 3.0.2)
|
16
17
|
tzinfo (~> 0.3.29)
|
17
|
-
activesupport (3.2.
|
18
|
-
i18n (
|
18
|
+
activesupport (3.2.13)
|
19
|
+
i18n (= 0.6.1)
|
19
20
|
multi_json (~> 1.0)
|
20
21
|
arel (3.0.2)
|
21
22
|
awesome_print (1.1.0)
|
22
|
-
backburner (0.3.
|
23
|
+
backburner (0.3.4)
|
23
24
|
beaneater (~> 0.3.0)
|
24
25
|
dante (~> 0.1.5)
|
25
26
|
beaneater (0.3.0)
|
26
27
|
builder (3.0.4)
|
27
|
-
celluloid (0.
|
28
|
-
facter (>= 1.6.12)
|
28
|
+
celluloid (0.14.1)
|
29
29
|
timers (>= 1.0.0)
|
30
|
-
coderay (1.0.
|
31
|
-
connection_pool (1.
|
30
|
+
coderay (1.0.9)
|
31
|
+
connection_pool (1.1.0)
|
32
32
|
dante (0.1.5)
|
33
|
-
delayed_job (
|
34
|
-
activesupport (
|
35
|
-
delayed_job_active_record (0.
|
36
|
-
activerecord (>=
|
37
|
-
delayed_job (
|
38
|
-
diff-lcs (1.
|
39
|
-
facter (1.6.17)
|
33
|
+
delayed_job (4.0.0.beta2)
|
34
|
+
activesupport (>= 3.0, < 4.1)
|
35
|
+
delayed_job_active_record (4.0.0.beta3)
|
36
|
+
activerecord (>= 3.0, < 4.1)
|
37
|
+
delayed_job (>= 3.0, < 4.1)
|
38
|
+
diff-lcs (1.2.4)
|
40
39
|
i18n (0.6.1)
|
40
|
+
json (1.8.0)
|
41
41
|
method_source (0.8.1)
|
42
|
-
|
43
|
-
|
42
|
+
mono_logger (1.1.0)
|
43
|
+
multi_json (1.7.6)
|
44
|
+
pry (0.9.12.2)
|
44
45
|
coderay (~> 1.0.5)
|
45
46
|
method_source (~> 0.8)
|
46
47
|
slop (~> 3.4)
|
47
48
|
qu (0.2.0)
|
48
49
|
multi_json
|
49
|
-
rack (1.5.
|
50
|
-
rack-protection (1.
|
50
|
+
rack (1.5.2)
|
51
|
+
rack-protection (1.5.0)
|
51
52
|
rack
|
52
|
-
redis (3.0.
|
53
|
-
redis-namespace (1.
|
53
|
+
redis (3.0.4)
|
54
|
+
redis-namespace (1.3.0)
|
54
55
|
redis (~> 3.0.0)
|
55
|
-
resque (1.
|
56
|
+
resque (1.24.1)
|
57
|
+
mono_logger (~> 1.0)
|
56
58
|
multi_json (~> 1.0)
|
57
|
-
redis-namespace (~> 1.
|
59
|
+
redis-namespace (~> 1.2)
|
58
60
|
sinatra (>= 0.9.2)
|
59
61
|
vegas (~> 0.1.2)
|
60
|
-
resque-scheduler (2.0.
|
62
|
+
resque-scheduler (2.0.1)
|
61
63
|
redis (>= 2.0.1)
|
62
64
|
resque (>= 1.20.0)
|
63
65
|
rufus-scheduler
|
64
|
-
rspec (2.
|
65
|
-
rspec-core (
|
66
|
-
rspec-expectations (
|
67
|
-
rspec-mocks (
|
68
|
-
rspec-core (2.
|
69
|
-
rspec-expectations (2.
|
70
|
-
diff-lcs (
|
71
|
-
rspec-mocks (2.
|
72
|
-
rufus-scheduler (2.0.
|
66
|
+
rspec (2.14.0.rc1)
|
67
|
+
rspec-core (= 2.14.0.rc1)
|
68
|
+
rspec-expectations (= 2.14.0.rc1)
|
69
|
+
rspec-mocks (= 2.14.0.rc1)
|
70
|
+
rspec-core (2.14.0.rc1)
|
71
|
+
rspec-expectations (2.14.0.rc1)
|
72
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
73
|
+
rspec-mocks (2.14.0.rc1)
|
74
|
+
rufus-scheduler (2.0.19)
|
73
75
|
tzinfo (>= 0.3.23)
|
74
|
-
sidekiq (2.
|
75
|
-
celluloid (
|
76
|
-
connection_pool (
|
77
|
-
|
78
|
-
redis (
|
76
|
+
sidekiq (2.12.1)
|
77
|
+
celluloid (>= 0.14.1)
|
78
|
+
connection_pool (>= 1.0.0)
|
79
|
+
json
|
80
|
+
redis (>= 3.0)
|
79
81
|
redis-namespace
|
80
|
-
sinatra (1.
|
81
|
-
rack (~> 1.
|
82
|
-
rack-protection (~> 1.
|
83
|
-
tilt (~> 1.3, >= 1.3.
|
84
|
-
slop (3.4.
|
82
|
+
sinatra (1.4.2)
|
83
|
+
rack (~> 1.5, >= 1.5.2)
|
84
|
+
rack-protection (~> 1.4)
|
85
|
+
tilt (~> 1.3, >= 1.3.4)
|
86
|
+
slop (3.4.5)
|
85
87
|
sqlite3 (1.3.7)
|
86
|
-
tilt (1.
|
88
|
+
tilt (1.4.1)
|
87
89
|
timers (1.1.0)
|
88
|
-
tzinfo (0.3.
|
90
|
+
tzinfo (0.3.37)
|
89
91
|
vegas (0.1.11)
|
90
92
|
rack (>= 1.0.0)
|
91
93
|
|
@@ -96,12 +98,13 @@ DEPENDENCIES
|
|
96
98
|
activerecord
|
97
99
|
awesome_print
|
98
100
|
backburner
|
99
|
-
|
101
|
+
delayed_job (~> 4.0.0.beta2)
|
102
|
+
delayed_job_active_record (~> 4.0.0.beta3)
|
100
103
|
pry
|
101
104
|
qe!
|
102
105
|
qu
|
103
106
|
resque
|
104
107
|
resque-scheduler
|
105
|
-
rspec
|
108
|
+
rspec (~> 2.14.0.rc1)
|
106
109
|
sidekiq
|
107
110
|
sqlite3
|
data/README.md
CHANGED
@@ -137,6 +137,41 @@ class MailerWorker
|
|
137
137
|
end
|
138
138
|
```
|
139
139
|
|
140
|
+
This approach is good enough, but if you're using ActionMailer, try the `Qe::ActionMailer` instead, combining this extension as well.
|
141
|
+
|
142
|
+
### ActionMailer integration
|
143
|
+
|
144
|
+
Qe comes with an extension to send e-mails through ActionMailer. You can set the mailer and which mail will be sent.
|
145
|
+
|
146
|
+
```ruby
|
147
|
+
class Mailer < ActionMailer::Base
|
148
|
+
def welcome(options)
|
149
|
+
@options = options
|
150
|
+
mail :to => options[:email]
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
class MailerWorker
|
155
|
+
include Qe::Worker
|
156
|
+
include Qe::ActionMailer
|
157
|
+
include Qe::Locale
|
158
|
+
|
159
|
+
def mailer
|
160
|
+
Mailer
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
MailerWorker.enqueue(
|
165
|
+
:mail => :welcome,
|
166
|
+
:name => "John Doe",
|
167
|
+
:email => "john@example.org"
|
168
|
+
)
|
169
|
+
```
|
170
|
+
|
171
|
+
If the `mailer()` method isn't defined, the `Qe::ActionMailer::AbstractMethodError` exception will be raised.
|
172
|
+
|
173
|
+
If the `:mail` option isn't defined, the `Qe::ActionMailer::MissingMailNameError` exception will be raised.
|
174
|
+
|
140
175
|
### Development support
|
141
176
|
|
142
177
|
Qe comes with development support. Instead of starting up workers on development environment, you can use the `Qe::Immediate` adapter, which executes your worker right away!
|
data/examples/workers.rb
CHANGED
data/lib/qe.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
module Qe
|
2
|
+
module ActionMailer
|
3
|
+
MissingMailNameError = Class.new(StandardError)
|
4
|
+
AbstractMethodError = Class.new(StandardError)
|
5
|
+
|
6
|
+
def mail
|
7
|
+
raise MissingMailNameError,
|
8
|
+
"the :mail option is not defined" unless options[:mail]
|
9
|
+
|
10
|
+
mailer.public_send(options[:mail], options)
|
11
|
+
end
|
12
|
+
|
13
|
+
def mailer
|
14
|
+
raise AbstractMethodError,
|
15
|
+
"you must implement the mailer method"
|
16
|
+
end
|
17
|
+
|
18
|
+
def perform
|
19
|
+
mail.deliver
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/qe/version.rb
CHANGED
data/qe.gemspec
CHANGED
@@ -17,6 +17,8 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
18
|
s.require_paths = ["lib"]
|
19
19
|
|
20
|
+
s.add_dependency "activesupport"
|
21
|
+
|
20
22
|
s.add_development_dependency "sidekiq"
|
21
23
|
s.add_development_dependency "qu"
|
22
24
|
s.add_development_dependency "delayed_job_active_record"
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Qe::ActionMailer do
|
4
|
+
let(:worker) {
|
5
|
+
Class.new do
|
6
|
+
include Qe::Worker
|
7
|
+
include Qe::ActionMailer
|
8
|
+
end
|
9
|
+
}
|
10
|
+
|
11
|
+
let(:mailer) { double(:mailer) }
|
12
|
+
|
13
|
+
subject(:job) {
|
14
|
+
worker.new(
|
15
|
+
:name => "John Doe",
|
16
|
+
:email => "john@example.org",
|
17
|
+
:mail => :hello
|
18
|
+
)
|
19
|
+
}
|
20
|
+
|
21
|
+
describe "#mail" do
|
22
|
+
it "raises error when have no :mail" do
|
23
|
+
job.options.delete(:mail)
|
24
|
+
|
25
|
+
expect {
|
26
|
+
job.mail
|
27
|
+
}.to raise_error(Qe::ActionMailer::MissingMailNameError)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "returns object for :mail option" do
|
31
|
+
job.stub :mailer => mailer
|
32
|
+
|
33
|
+
mailer
|
34
|
+
.should_receive(:hello)
|
35
|
+
.with(job.options)
|
36
|
+
|
37
|
+
job.mail
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#mailer" do
|
42
|
+
it "raises error when method implemented" do
|
43
|
+
expect {
|
44
|
+
job.mailer
|
45
|
+
}.to raise_error(Qe::ActionMailer::AbstractMethodError)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#perform" do
|
50
|
+
it "delivers e-mail" do
|
51
|
+
mail = double(:mail)
|
52
|
+
job.stub :mail => mail
|
53
|
+
|
54
|
+
mail.should_receive(:deliver)
|
55
|
+
|
56
|
+
job.perform
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/spec/qe/beanstalk_spec.rb
CHANGED
@@ -19,7 +19,7 @@ describe Qe::Beanstalk do
|
|
19
19
|
|
20
20
|
context "enqueuing" do
|
21
21
|
let(:worker) {
|
22
|
-
|
22
|
+
double("worker", :queue => "some_queue", :name => "SomeWorker")
|
23
23
|
}
|
24
24
|
|
25
25
|
before do
|
@@ -45,7 +45,7 @@ describe Qe::Beanstalk do
|
|
45
45
|
|
46
46
|
context "scheduling" do
|
47
47
|
let(:worker) {
|
48
|
-
|
48
|
+
double("worker", :queue => "some_queue", :name => "SomeWorker")
|
49
49
|
}
|
50
50
|
|
51
51
|
let(:date) { Time.parse("2012-12-05 02:00:00") }
|
data/spec/qe/delayed_job_spec.rb
CHANGED
@@ -22,7 +22,7 @@ describe Qe::DelayedJob do
|
|
22
22
|
|
23
23
|
context "enqueuing" do
|
24
24
|
let(:worker) {
|
25
|
-
|
25
|
+
double("worker", :queue => "some_queue", :name => "SomeWorker")
|
26
26
|
}
|
27
27
|
|
28
28
|
before do
|
@@ -46,7 +46,7 @@ describe Qe::DelayedJob do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
it "enqueues job" do
|
49
|
-
job =
|
49
|
+
job = double("job")
|
50
50
|
Qe::DelayedJob::Worker.stub :new => job
|
51
51
|
|
52
52
|
Delayed::Job
|
@@ -59,7 +59,7 @@ describe Qe::DelayedJob do
|
|
59
59
|
|
60
60
|
context "scheduling" do
|
61
61
|
let(:worker) {
|
62
|
-
|
62
|
+
double("worker", :queue => "some_queue", :name => "SomeWorker")
|
63
63
|
}
|
64
64
|
|
65
65
|
let(:date) { Time.now }
|
@@ -85,7 +85,7 @@ describe Qe::DelayedJob do
|
|
85
85
|
end
|
86
86
|
|
87
87
|
it "schedules job" do
|
88
|
-
job =
|
88
|
+
job = double("job")
|
89
89
|
Qe::DelayedJob::Worker.stub :new => job
|
90
90
|
|
91
91
|
Delayed::Job
|
data/spec/qe/immediate_spec.rb
CHANGED
data/spec/qe/locale_spec.rb
CHANGED
data/spec/qe/qu_spec.rb
CHANGED
@@ -19,7 +19,7 @@ describe Qe::Qu do
|
|
19
19
|
|
20
20
|
context "enqueuing" do
|
21
21
|
let(:worker) {
|
22
|
-
|
22
|
+
double("worker", :queue => "some_queue", :name => "SomeWorker")
|
23
23
|
}
|
24
24
|
|
25
25
|
before do
|
@@ -43,7 +43,7 @@ describe Qe::Qu do
|
|
43
43
|
context "scheduling" do
|
44
44
|
it "raises exception" do
|
45
45
|
expect {
|
46
|
-
Qe::Qu.schedule(
|
46
|
+
Qe::Qu.schedule(double, Time.now, :a => 1)
|
47
47
|
}.to raise_error(Qe::UnsupportedFeatureError)
|
48
48
|
end
|
49
49
|
end
|
data/spec/qe/resque_spec.rb
CHANGED
@@ -19,7 +19,7 @@ describe Qe::Resque do
|
|
19
19
|
|
20
20
|
context "enqueuing" do
|
21
21
|
let(:worker) {
|
22
|
-
|
22
|
+
double("worker", :queue => "some_queue", :name => "SomeWorker")
|
23
23
|
}
|
24
24
|
|
25
25
|
before do
|
@@ -44,7 +44,7 @@ describe Qe::Resque do
|
|
44
44
|
let(:date) { Time.now }
|
45
45
|
|
46
46
|
let(:worker) {
|
47
|
-
|
47
|
+
double("worker", :queue => "some_queue", :name => "SomeWorker")
|
48
48
|
}
|
49
49
|
|
50
50
|
before do
|
data/spec/qe/sidekiq_spec.rb
CHANGED
@@ -23,7 +23,7 @@ describe Qe::Sidekiq do
|
|
23
23
|
|
24
24
|
context "enqueuing" do
|
25
25
|
let(:worker) {
|
26
|
-
|
26
|
+
double("worker", :queue => "some_queue", :name => "SomeWorker")
|
27
27
|
}
|
28
28
|
|
29
29
|
before do
|
@@ -49,7 +49,7 @@ describe Qe::Sidekiq do
|
|
49
49
|
|
50
50
|
context "scheduling" do
|
51
51
|
let(:worker) {
|
52
|
-
|
52
|
+
double("worker", :queue => "some_queue", :name => "SomeWorker")
|
53
53
|
}
|
54
54
|
|
55
55
|
before do
|
data/spec/qe/worker_spec.rb
CHANGED
@@ -8,11 +8,18 @@ describe Qe::Worker do
|
|
8
8
|
|
9
9
|
it "returns options" do
|
10
10
|
hello = HelloWorker.new(:a => 1)
|
11
|
-
expect(hello.options).to
|
11
|
+
expect(hello.options).to include(:a => 1)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns options as HashWithIndifferentAccess" do
|
15
|
+
hello = HelloWorker.new("a" => 1)
|
16
|
+
|
17
|
+
expect(hello.options[:a]).to eql(1)
|
18
|
+
expect(hello.options["a"]).to eql(1)
|
12
19
|
end
|
13
20
|
|
14
21
|
it "delegates #enqueue to adapter" do
|
15
|
-
adapter =
|
22
|
+
adapter = double("adapter")
|
16
23
|
adapter
|
17
24
|
.should_receive(:enqueue)
|
18
25
|
.with(HelloWorker, :a => 1)
|
@@ -23,7 +30,7 @@ describe Qe::Worker do
|
|
23
30
|
end
|
24
31
|
|
25
32
|
it "delegates scheduling to adapter" do
|
26
|
-
adapter =
|
33
|
+
adapter = double("adapter")
|
27
34
|
date = Time.now
|
28
35
|
adapter
|
29
36
|
.should_receive(:schedule)
|
@@ -35,7 +42,7 @@ describe Qe::Worker do
|
|
35
42
|
end
|
36
43
|
|
37
44
|
it "finds worker by its name" do
|
38
|
-
worker =
|
45
|
+
worker = double("worker")
|
39
46
|
stub_const "Some::Weird::Worker", worker
|
40
47
|
|
41
48
|
expect(Qe::Worker.find("Some::Weird::Worker")).to eql(worker)
|
@@ -55,7 +62,7 @@ describe Qe::Worker do
|
|
55
62
|
HelloWorker
|
56
63
|
.should_receive(:new)
|
57
64
|
.with(:a => 1)
|
58
|
-
.and_return(
|
65
|
+
.and_return(double.as_null_object)
|
59
66
|
|
60
67
|
Qe::Worker.perform("HelloWorker", :a => 1)
|
61
68
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,190 +1,181 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Nando Vieira
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-06-07 00:00:00.000000000 Z
|
13
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: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
14
27
|
- !ruby/object:Gem::Dependency
|
15
28
|
name: sidekiq
|
16
29
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
30
|
requirements:
|
19
|
-
- -
|
31
|
+
- - '>='
|
20
32
|
- !ruby/object:Gem::Version
|
21
33
|
version: '0'
|
22
34
|
type: :development
|
23
35
|
prerelease: false
|
24
36
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
37
|
requirements:
|
27
|
-
- -
|
38
|
+
- - '>='
|
28
39
|
- !ruby/object:Gem::Version
|
29
40
|
version: '0'
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
42
|
name: qu
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
44
|
requirements:
|
35
|
-
- -
|
45
|
+
- - '>='
|
36
46
|
- !ruby/object:Gem::Version
|
37
47
|
version: '0'
|
38
48
|
type: :development
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
|
-
- -
|
52
|
+
- - '>='
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: '0'
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: delayed_job_active_record
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - '>='
|
52
60
|
- !ruby/object:Gem::Version
|
53
61
|
version: '0'
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - '>='
|
60
67
|
- !ruby/object:Gem::Version
|
61
68
|
version: '0'
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
70
|
name: backburner
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
|
-
- -
|
73
|
+
- - '>='
|
68
74
|
- !ruby/object:Gem::Version
|
69
75
|
version: '0'
|
70
76
|
type: :development
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
79
|
requirements:
|
75
|
-
- -
|
80
|
+
- - '>='
|
76
81
|
- !ruby/object:Gem::Version
|
77
82
|
version: '0'
|
78
83
|
- !ruby/object:Gem::Dependency
|
79
84
|
name: resque
|
80
85
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
86
|
requirements:
|
83
|
-
- -
|
87
|
+
- - '>='
|
84
88
|
- !ruby/object:Gem::Version
|
85
89
|
version: '0'
|
86
90
|
type: :development
|
87
91
|
prerelease: false
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
93
|
requirements:
|
91
|
-
- -
|
94
|
+
- - '>='
|
92
95
|
- !ruby/object:Gem::Version
|
93
96
|
version: '0'
|
94
97
|
- !ruby/object:Gem::Dependency
|
95
98
|
name: resque-scheduler
|
96
99
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
100
|
requirements:
|
99
|
-
- -
|
101
|
+
- - '>='
|
100
102
|
- !ruby/object:Gem::Version
|
101
103
|
version: '0'
|
102
104
|
type: :development
|
103
105
|
prerelease: false
|
104
106
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
107
|
requirements:
|
107
|
-
- -
|
108
|
+
- - '>='
|
108
109
|
- !ruby/object:Gem::Version
|
109
110
|
version: '0'
|
110
111
|
- !ruby/object:Gem::Dependency
|
111
112
|
name: activerecord
|
112
113
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - '>='
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
121
|
requirements:
|
123
|
-
- -
|
122
|
+
- - '>='
|
124
123
|
- !ruby/object:Gem::Version
|
125
124
|
version: '0'
|
126
125
|
- !ruby/object:Gem::Dependency
|
127
126
|
name: awesome_print
|
128
127
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
128
|
requirements:
|
131
|
-
- -
|
129
|
+
- - '>='
|
132
130
|
- !ruby/object:Gem::Version
|
133
131
|
version: '0'
|
134
132
|
type: :development
|
135
133
|
prerelease: false
|
136
134
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
135
|
requirements:
|
139
|
-
- -
|
136
|
+
- - '>='
|
140
137
|
- !ruby/object:Gem::Version
|
141
138
|
version: '0'
|
142
139
|
- !ruby/object:Gem::Dependency
|
143
140
|
name: pry
|
144
141
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
142
|
requirements:
|
147
|
-
- -
|
143
|
+
- - '>='
|
148
144
|
- !ruby/object:Gem::Version
|
149
145
|
version: '0'
|
150
146
|
type: :development
|
151
147
|
prerelease: false
|
152
148
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
149
|
requirements:
|
155
|
-
- -
|
150
|
+
- - '>='
|
156
151
|
- !ruby/object:Gem::Version
|
157
152
|
version: '0'
|
158
153
|
- !ruby/object:Gem::Dependency
|
159
154
|
name: rspec
|
160
155
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
156
|
requirements:
|
163
|
-
- -
|
157
|
+
- - '>='
|
164
158
|
- !ruby/object:Gem::Version
|
165
159
|
version: '0'
|
166
160
|
type: :development
|
167
161
|
prerelease: false
|
168
162
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
163
|
requirements:
|
171
|
-
- -
|
164
|
+
- - '>='
|
172
165
|
- !ruby/object:Gem::Version
|
173
166
|
version: '0'
|
174
167
|
- !ruby/object:Gem::Dependency
|
175
168
|
name: sqlite3
|
176
169
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
170
|
requirements:
|
179
|
-
- -
|
171
|
+
- - '>='
|
180
172
|
- !ruby/object:Gem::Version
|
181
173
|
version: '0'
|
182
174
|
type: :development
|
183
175
|
prerelease: false
|
184
176
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
177
|
requirements:
|
187
|
-
- -
|
178
|
+
- - '>='
|
188
179
|
- !ruby/object:Gem::Version
|
189
180
|
version: '0'
|
190
181
|
description: A simple interface over several background job libraries like Resque,
|
@@ -217,6 +208,7 @@ files:
|
|
217
208
|
- examples/workers.rb
|
218
209
|
- lib/qe.rb
|
219
210
|
- lib/qe/action.rb
|
211
|
+
- lib/qe/action_mailer.rb
|
220
212
|
- lib/qe/beanstalk.rb
|
221
213
|
- lib/qe/delayed_job.rb
|
222
214
|
- lib/qe/immediate.rb
|
@@ -231,6 +223,7 @@ files:
|
|
231
223
|
- lib/qe/worker/class_methods.rb
|
232
224
|
- lib/qe/worker/instance_methods.rb
|
233
225
|
- qe.gemspec
|
226
|
+
- spec/qe/action_mailer_spec.rb
|
234
227
|
- spec/qe/action_spec.rb
|
235
228
|
- spec/qe/beanstalk_spec.rb
|
236
229
|
- spec/qe/delayed_job_spec.rb
|
@@ -246,27 +239,26 @@ files:
|
|
246
239
|
- spec/support/localized_worker.rb
|
247
240
|
homepage: http://rubygems.org/gems/qe
|
248
241
|
licenses: []
|
242
|
+
metadata: {}
|
249
243
|
post_install_message:
|
250
244
|
rdoc_options: []
|
251
245
|
require_paths:
|
252
246
|
- lib
|
253
247
|
required_ruby_version: !ruby/object:Gem::Requirement
|
254
|
-
none: false
|
255
248
|
requirements:
|
256
|
-
- -
|
249
|
+
- - '>='
|
257
250
|
- !ruby/object:Gem::Version
|
258
251
|
version: '0'
|
259
252
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
260
|
-
none: false
|
261
253
|
requirements:
|
262
|
-
- -
|
254
|
+
- - '>='
|
263
255
|
- !ruby/object:Gem::Version
|
264
256
|
version: '0'
|
265
257
|
requirements: []
|
266
258
|
rubyforge_project:
|
267
|
-
rubygems_version:
|
259
|
+
rubygems_version: 2.0.3
|
268
260
|
signing_key:
|
269
|
-
specification_version:
|
261
|
+
specification_version: 4
|
270
262
|
summary: A simple interface over several background job libraries like Resque, Sidekiq
|
271
263
|
and DelayedJob.
|
272
264
|
test_files: []
|