que 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.travis.yml +1 -1
  4. data/CHANGELOG.md +21 -1
  5. data/Gemfile +5 -0
  6. data/README.md +7 -6
  7. data/docs/advanced_setup.md +14 -4
  8. data/docs/customizing_que.md +4 -4
  9. data/docs/error_handling.md +13 -1
  10. data/docs/managing_workers.md +2 -2
  11. data/docs/migrating.md +26 -0
  12. data/docs/multiple_queues.md +13 -0
  13. data/docs/shutting_down_safely.md +7 -0
  14. data/docs/writing_reliable_jobs.md +43 -0
  15. data/lib/generators/que/templates/add_que.rb +1 -1
  16. data/lib/que.rb +27 -41
  17. data/lib/que/adapters/base.rb +75 -4
  18. data/lib/que/job.rb +45 -28
  19. data/lib/que/migrations.rb +3 -2
  20. data/lib/que/migrations/{1-down.sql → 1/down.sql} +0 -0
  21. data/lib/que/migrations/{1-up.sql → 1/up.sql} +0 -0
  22. data/lib/que/migrations/{2-down.sql → 2/down.sql} +0 -0
  23. data/lib/que/migrations/{2-up.sql → 2/up.sql} +0 -0
  24. data/lib/que/migrations/3/down.sql +5 -0
  25. data/lib/que/migrations/3/up.sql +5 -0
  26. data/lib/que/sql.rb +24 -17
  27. data/lib/que/version.rb +1 -1
  28. data/lib/que/worker.rb +6 -5
  29. data/spec/adapters/active_record_spec.rb +6 -6
  30. data/spec/adapters/sequel_spec.rb +4 -4
  31. data/spec/gemfiles/Gemfile1 +18 -0
  32. data/spec/gemfiles/Gemfile2 +18 -0
  33. data/spec/support/helpers.rb +2 -1
  34. data/spec/support/shared_examples/adapter.rb +7 -3
  35. data/spec/support/shared_examples/multi_threaded_adapter.rb +2 -2
  36. data/spec/travis.rb +12 -4
  37. data/spec/unit/customization_spec.rb +148 -0
  38. data/spec/unit/{queue_spec.rb → enqueue_spec.rb} +115 -14
  39. data/spec/unit/logging_spec.rb +3 -2
  40. data/spec/unit/migrations_spec.rb +3 -2
  41. data/spec/unit/pool_spec.rb +30 -6
  42. data/spec/unit/run_spec.rb +12 -0
  43. data/spec/unit/states_spec.rb +29 -31
  44. data/spec/unit/stats_spec.rb +16 -14
  45. data/spec/unit/work_spec.rb +120 -25
  46. data/spec/unit/worker_spec.rb +55 -9
  47. data/tasks/safe_shutdown.rb +1 -1
  48. metadata +30 -17
@@ -3,8 +3,8 @@ require 'spec_helper'
3
3
  describe Que::Worker do
4
4
  it "should work jobs when started until there are none available" do
5
5
  begin
6
- Que::Job.queue
7
- Que::Job.queue
6
+ Que::Job.enqueue
7
+ Que::Job.enqueue
8
8
  DB[:que_jobs].count.should be 2
9
9
 
10
10
  @worker = Que::Worker.new
@@ -23,13 +23,59 @@ describe Que::Worker do
23
23
  end
24
24
  end
25
25
 
26
+ it "should work jobs without a named queue by default" do
27
+ begin
28
+ Que::Job.enqueue 1
29
+ Que::Job.enqueue 2, :queue => 'my_queue'
30
+
31
+ @worker = Que::Worker.new
32
+ sleep_until { @worker.sleeping? }
33
+ DB[:que_jobs].count.should be 1
34
+
35
+ $logger.messages.map{|m| JSON.load(m)['event']}.should == %w(job_worked job_unavailable)
36
+
37
+ json = JSON.load($logger.messages[0])
38
+ json['job']['queue'].should == ''
39
+ json['job']['job_class'].should == 'Que::Job'
40
+ json['job']['args'].should == [1]
41
+ ensure
42
+ if @worker
43
+ @worker.stop
44
+ @worker.wait_until_stopped
45
+ end
46
+ end
47
+ end
48
+
49
+ it "should accept the name of a single queue to work jobs from" do
50
+ begin
51
+ Que::Job.enqueue 1
52
+ Que::Job.enqueue 2, :queue => 'my_queue'
53
+
54
+ @worker = Que::Worker.new(:my_queue)
55
+ sleep_until { @worker.sleeping? }
56
+ DB[:que_jobs].count.should be 1
57
+
58
+ $logger.messages.map{|m| JSON.load(m)['event']}.should == %w(job_worked job_unavailable)
59
+
60
+ json = JSON.load($logger.messages[0])
61
+ json['job']['queue'].should == 'my_queue'
62
+ json['job']['job_class'].should == 'Que::Job'
63
+ json['job']['args'].should == [2]
64
+ ensure
65
+ if @worker
66
+ @worker.stop
67
+ @worker.wait_until_stopped
68
+ end
69
+ end
70
+ end
71
+
26
72
  it "#wake! should return truthy if the worker was asleep and is woken up, at which point it should work until no jobs are available" do
27
73
  begin
28
74
  @worker = Que::Worker.new
29
75
  sleep_until { @worker.sleeping? }
30
76
 
31
- Que::Job.queue
32
- Que::Job.queue
77
+ Que::Job.enqueue
78
+ Que::Job.enqueue
33
79
  DB[:que_jobs].count.should be 2
34
80
 
35
81
  @worker.wake!.should be true
@@ -45,7 +91,7 @@ describe Que::Worker do
45
91
 
46
92
  it "#wake! should return falsy if the worker was already working" do
47
93
  begin
48
- BlockJob.queue
94
+ BlockJob.enqueue
49
95
  @worker = Que::Worker.new
50
96
 
51
97
  $q1.pop
@@ -62,8 +108,8 @@ describe Que::Worker do
62
108
 
63
109
  it "should not be deterred by a job that raises an error" do
64
110
  begin
65
- ErrorJob.queue :priority => 1
66
- Que::Job.queue :priority => 5
111
+ ErrorJob.enqueue :priority => 1
112
+ Que::Job.enqueue :priority => 5
67
113
 
68
114
  @worker = Que::Worker.new
69
115
 
@@ -89,8 +135,8 @@ describe Que::Worker do
89
135
 
90
136
  it "should receive and respect a notification to stop down when it is working, after its current job completes" do
91
137
  begin
92
- BlockJob.queue :priority => 1
93
- Que::Job.queue :priority => 5
138
+ BlockJob.enqueue :priority => 1
139
+ Que::Job.enqueue :priority => 5
94
140
  DB[:que_jobs].count.should be 2
95
141
 
96
142
  @worker = Que::Worker.new
@@ -40,7 +40,7 @@ task :safe_shutdown do
40
40
  end
41
41
  end
42
42
 
43
- SafeJob.queue
43
+ SafeJob.enqueue
44
44
  Que.mode = :async
45
45
  $queue.pop
46
46
 
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: que
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Hanks
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-14 00:00:00.000000000 Z
11
+ date: 2014-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
+ prerelease: false
21
22
  version_requirements: !ruby/object:Gem::Requirement
22
23
  requirements:
23
- - - "~>"
24
+ - - ~>
24
25
  - !ruby/object:Gem::Version
25
26
  version: '1.3'
26
- prerelease: false
27
27
  description: A job queue that uses PostgreSQL's advisory locks for speed and reliability.
28
28
  email:
29
29
  - christopher.m.hanks@gmail.com
@@ -31,9 +31,9 @@ executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
- - ".gitignore"
35
- - ".rspec"
36
- - ".travis.yml"
34
+ - .gitignore
35
+ - .rspec
36
+ - .travis.yml
37
37
  - CHANGELOG.md
38
38
  - Gemfile
39
39
  - LICENSE.txt
@@ -45,6 +45,9 @@ files:
45
45
  - docs/inspecting_the_queue.md
46
46
  - docs/logging.md
47
47
  - docs/managing_workers.md
48
+ - docs/migrating.md
49
+ - docs/multiple_queues.md
50
+ - docs/shutting_down_safely.md
48
51
  - docs/using_plain_connections.md
49
52
  - docs/using_sequel.md
50
53
  - docs/writing_reliable_jobs.md
@@ -58,10 +61,12 @@ files:
58
61
  - lib/que/adapters/sequel.rb
59
62
  - lib/que/job.rb
60
63
  - lib/que/migrations.rb
61
- - lib/que/migrations/1-down.sql
62
- - lib/que/migrations/1-up.sql
63
- - lib/que/migrations/2-down.sql
64
- - lib/que/migrations/2-up.sql
64
+ - lib/que/migrations/1/down.sql
65
+ - lib/que/migrations/1/up.sql
66
+ - lib/que/migrations/2/down.sql
67
+ - lib/que/migrations/2/up.sql
68
+ - lib/que/migrations/3/down.sql
69
+ - lib/que/migrations/3/up.sql
65
70
  - lib/que/railtie.rb
66
71
  - lib/que/rake_tasks.rb
67
72
  - lib/que/sql.rb
@@ -72,6 +77,8 @@ files:
72
77
  - spec/adapters/connection_pool_spec.rb
73
78
  - spec/adapters/pg_spec.rb
74
79
  - spec/adapters/sequel_spec.rb
80
+ - spec/gemfiles/Gemfile1
81
+ - spec/gemfiles/Gemfile2
75
82
  - spec/spec_helper.rb
76
83
  - spec/support/helpers.rb
77
84
  - spec/support/jobs.rb
@@ -79,11 +86,13 @@ files:
79
86
  - spec/support/shared_examples/multi_threaded_adapter.rb
80
87
  - spec/travis.rb
81
88
  - spec/unit/connection_spec.rb
89
+ - spec/unit/customization_spec.rb
90
+ - spec/unit/enqueue_spec.rb
82
91
  - spec/unit/helper_spec.rb
83
92
  - spec/unit/logging_spec.rb
84
93
  - spec/unit/migrations_spec.rb
85
94
  - spec/unit/pool_spec.rb
86
- - spec/unit/queue_spec.rb
95
+ - spec/unit/run_spec.rb
87
96
  - spec/unit/states_spec.rb
88
97
  - spec/unit/stats_spec.rb
89
98
  - spec/unit/work_spec.rb
@@ -101,17 +110,17 @@ require_paths:
101
110
  - lib
102
111
  required_ruby_version: !ruby/object:Gem::Requirement
103
112
  requirements:
104
- - - ">="
113
+ - - '>='
105
114
  - !ruby/object:Gem::Version
106
115
  version: '0'
107
116
  required_rubygems_version: !ruby/object:Gem::Requirement
108
117
  requirements:
109
- - - ">="
118
+ - - '>='
110
119
  - !ruby/object:Gem::Version
111
120
  version: '0'
112
121
  requirements: []
113
122
  rubyforge_project:
114
- rubygems_version: 2.1.5
123
+ rubygems_version: 2.0.3
115
124
  signing_key:
116
125
  specification_version: 4
117
126
  summary: A PostgreSQL-based Job Queue
@@ -120,6 +129,8 @@ test_files:
120
129
  - spec/adapters/connection_pool_spec.rb
121
130
  - spec/adapters/pg_spec.rb
122
131
  - spec/adapters/sequel_spec.rb
132
+ - spec/gemfiles/Gemfile1
133
+ - spec/gemfiles/Gemfile2
123
134
  - spec/spec_helper.rb
124
135
  - spec/support/helpers.rb
125
136
  - spec/support/jobs.rb
@@ -127,11 +138,13 @@ test_files:
127
138
  - spec/support/shared_examples/multi_threaded_adapter.rb
128
139
  - spec/travis.rb
129
140
  - spec/unit/connection_spec.rb
141
+ - spec/unit/customization_spec.rb
142
+ - spec/unit/enqueue_spec.rb
130
143
  - spec/unit/helper_spec.rb
131
144
  - spec/unit/logging_spec.rb
132
145
  - spec/unit/migrations_spec.rb
133
146
  - spec/unit/pool_spec.rb
134
- - spec/unit/queue_spec.rb
147
+ - spec/unit/run_spec.rb
135
148
  - spec/unit/states_spec.rb
136
149
  - spec/unit/stats_spec.rb
137
150
  - spec/unit/work_spec.rb