qe 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -1,2 +1,6 @@
1
- source :rubygems
1
+ source "https://rubygems.org"
2
2
  gemspec
3
+
4
+ gem "delayed_job", "~> 4.0.0.beta2"
5
+ gem "delayed_job_active_record", "~> 4.0.0.beta3"
6
+ gem "rspec", "~> 2.14.0.rc1"
@@ -1,91 +1,93 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qe (0.2.1)
4
+ qe (0.3.0)
5
+ activesupport
5
6
 
6
7
  GEM
7
- remote: http://rubygems.org/
8
+ remote: https://rubygems.org/
8
9
  specs:
9
- activemodel (3.2.11)
10
- activesupport (= 3.2.11)
10
+ activemodel (3.2.13)
11
+ activesupport (= 3.2.13)
11
12
  builder (~> 3.0.0)
12
- activerecord (3.2.11)
13
- activemodel (= 3.2.11)
14
- activesupport (= 3.2.11)
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.11)
18
- i18n (~> 0.6)
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.2)
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.12.4)
28
- facter (>= 1.6.12)
28
+ celluloid (0.14.1)
29
29
  timers (>= 1.0.0)
30
- coderay (1.0.8)
31
- connection_pool (1.0.0)
30
+ coderay (1.0.9)
31
+ connection_pool (1.1.0)
32
32
  dante (0.1.5)
33
- delayed_job (3.0.5)
34
- activesupport (~> 3.0)
35
- delayed_job_active_record (0.3.3)
36
- activerecord (>= 2.1.0, < 4)
37
- delayed_job (~> 3.0)
38
- diff-lcs (1.1.3)
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
- multi_json (1.5.0)
43
- pry (0.9.11.4)
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.1)
50
- rack-protection (1.3.2)
50
+ rack (1.5.2)
51
+ rack-protection (1.5.0)
51
52
  rack
52
- redis (3.0.2)
53
- redis-namespace (1.2.1)
53
+ redis (3.0.4)
54
+ redis-namespace (1.3.0)
54
55
  redis (~> 3.0.0)
55
- resque (1.23.0)
56
+ resque (1.24.1)
57
+ mono_logger (~> 1.0)
56
58
  multi_json (~> 1.0)
57
- redis-namespace (~> 1.0)
59
+ redis-namespace (~> 1.2)
58
60
  sinatra (>= 0.9.2)
59
61
  vegas (~> 0.1.2)
60
- resque-scheduler (2.0.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.12.0)
65
- rspec-core (~> 2.12.0)
66
- rspec-expectations (~> 2.12.0)
67
- rspec-mocks (~> 2.12.0)
68
- rspec-core (2.12.2)
69
- rspec-expectations (2.12.1)
70
- diff-lcs (~> 1.1.3)
71
- rspec-mocks (2.12.2)
72
- rufus-scheduler (2.0.17)
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.6.5)
75
- celluloid (~> 0.12.0)
76
- connection_pool (~> 1.0)
77
- multi_json (~> 1)
78
- redis (~> 3)
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.3.4)
81
- rack (~> 1.4)
82
- rack-protection (~> 1.3)
83
- tilt (~> 1.3, >= 1.3.3)
84
- slop (3.4.3)
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.3.3)
88
+ tilt (1.4.1)
87
89
  timers (1.1.0)
88
- tzinfo (0.3.35)
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
- delayed_job_active_record
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!
@@ -1,6 +1,5 @@
1
- require "bundler"
2
- Bundler.setup(:default, ENV.fetch("GROUP"))
3
- Bundler.require
1
+ require "bundler/setup"
2
+ Bundler.require(:default, ENV.fetch("GROUP"))
4
3
 
5
4
  require "time"
6
5
 
data/lib/qe.rb CHANGED
@@ -1,4 +1,7 @@
1
+ require "active_support/hash_with_indifferent_access"
2
+
1
3
  require "qe/action"
4
+ require "qe/action_mailer"
2
5
  require "qe/locale"
3
6
  require "qe/immediate"
4
7
  require "qe/version"
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Qe
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -2,7 +2,7 @@ module Qe
2
2
  module Worker
3
3
  module InstanceMethods
4
4
  def initialize(options)
5
- @options = options
5
+ @options = options.with_indifferent_access
6
6
  end
7
7
 
8
8
  # Return options that were provided when
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
@@ -19,7 +19,7 @@ describe Qe::Beanstalk do
19
19
 
20
20
  context "enqueuing" do
21
21
  let(:worker) {
22
- mock("worker", :queue => "some_queue", :name => "SomeWorker")
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
- mock("worker", :queue => "some_queue", :name => "SomeWorker")
48
+ double("worker", :queue => "some_queue", :name => "SomeWorker")
49
49
  }
50
50
 
51
51
  let(:date) { Time.parse("2012-12-05 02:00:00") }
@@ -22,7 +22,7 @@ describe Qe::DelayedJob do
22
22
 
23
23
  context "enqueuing" do
24
24
  let(:worker) {
25
- mock("worker", :queue => "some_queue", :name => "SomeWorker")
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 = mock("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
- mock("worker", :queue => "some_queue", :name => "SomeWorker")
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 = mock("job")
88
+ job = double("job")
89
89
  Qe::DelayedJob::Worker.stub :new => job
90
90
 
91
91
  Delayed::Job
@@ -1,7 +1,7 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Qe::Immediate do
4
- let(:job) { mock("job").as_null_object }
4
+ let(:job) { double("job").as_null_object }
5
5
 
6
6
  it "sets options" do
7
7
  HelloWorker
@@ -1,7 +1,7 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Qe::Locale do
4
- let(:i18n) { mock("I18n", :locale => :en) }
4
+ let(:i18n) { double("I18n", :locale => :en) }
5
5
 
6
6
  before do
7
7
  stub_const("I18n", i18n)
@@ -19,7 +19,7 @@ describe Qe::Qu do
19
19
 
20
20
  context "enqueuing" do
21
21
  let(:worker) {
22
- mock("worker", :queue => "some_queue", :name => "SomeWorker")
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(stub, Time.now, :a => 1)
46
+ Qe::Qu.schedule(double, Time.now, :a => 1)
47
47
  }.to raise_error(Qe::UnsupportedFeatureError)
48
48
  end
49
49
  end
@@ -19,7 +19,7 @@ describe Qe::Resque do
19
19
 
20
20
  context "enqueuing" do
21
21
  let(:worker) {
22
- mock("worker", :queue => "some_queue", :name => "SomeWorker")
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
- mock("worker", :queue => "some_queue", :name => "SomeWorker")
47
+ double("worker", :queue => "some_queue", :name => "SomeWorker")
48
48
  }
49
49
 
50
50
  before do
@@ -23,7 +23,7 @@ describe Qe::Sidekiq do
23
23
 
24
24
  context "enqueuing" do
25
25
  let(:worker) {
26
- mock("worker", :queue => "some_queue", :name => "SomeWorker")
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
- mock("worker", :queue => "some_queue", :name => "SomeWorker")
52
+ double("worker", :queue => "some_queue", :name => "SomeWorker")
53
53
  }
54
54
 
55
55
  before do
@@ -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 eql(:a => 1)
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 = mock("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 = mock("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 = mock("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(mock.as_null_object)
65
+ .and_return(double.as_null_object)
59
66
 
60
67
  Qe::Worker.perform("HelloWorker", :a => 1)
61
68
  end
@@ -1,5 +1,4 @@
1
- require "bundler"
2
- Bundler.setup(:default, :development)
1
+ require "bundler/setup"
3
2
  Bundler.require(:default, :development)
4
3
 
5
4
  require "qe"
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.2.1
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-02-02 00:00:00.000000000 Z
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: 1.8.25
259
+ rubygems_version: 2.0.3
268
260
  signing_key:
269
- specification_version: 3
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: []