qe 0.2.1 → 0.3.0

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.
@@ -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: []