resque_spec 0.5.1 → 0.6.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.
- data/README.md +19 -4
- data/lib/resque_spec.rb +57 -2
- data/lib/resque_spec/ext.rb +22 -0
- data/lib/resque_spec/helpers.rb +5 -20
- data/lib/resque_spec/{resque_scheduler_spec.rb → scheduler.rb} +2 -4
- data/lib/resque_spec/version.rb +1 -1
- metadata +5 -28
- data/lib/resque_spec/resque_spec.rb +0 -84
data/README.md
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
ResqueSpec
|
2
2
|
==========
|
3
3
|
|
4
|
-
A simple RSpec and Cucumber matcher for Resque.enqueue and Resque.enqueue_at
|
4
|
+
A simple RSpec and Cucumber matcher for Resque.enqueue and Resque.enqueue_at
|
5
|
+
(from `ResqueScheduler`), loosely based on
|
5
6
|
[http://github.com/justinweiss/resque_unit](http://github.com/justinweiss/resque_unit).
|
6
7
|
|
7
|
-
This should work with `Resque v1.
|
8
|
+
This should work with `Resque v1.15.0` and up and `RSpec v2.5.0` and up.
|
8
9
|
|
9
|
-
If you are using `RSpec ~> 1.3.0`, you should use version `~> 0.2.0`.
|
10
|
+
If you are using `RSpec ~> 1.3.0`, you should use version `~> 0.2.0`. This
|
11
|
+
branch is not actively maintained.
|
10
12
|
|
11
13
|
Install
|
12
14
|
-------
|
@@ -172,6 +174,19 @@ Or I write this spec using the `with_resque` helper
|
|
172
174
|
end
|
173
175
|
end
|
174
176
|
|
177
|
+
You can turn this behavior on by setting `ResqueSpec.inline = true`.
|
178
|
+
|
179
|
+
Hooks
|
180
|
+
-----
|
181
|
+
|
182
|
+
Resque will call a hook method on your class after a Job is enqueued. Name your
|
183
|
+
class method starting with the string `after_enqueue` (you can stop there if
|
184
|
+
you want) and it will be called with the arguments to the Job after it has been
|
185
|
+
placed on the queue. When you are using ResqueSpec, your `after_enqueue` hook
|
186
|
+
will be called.
|
187
|
+
|
188
|
+
The hooks around `perform` are not support by ResqueSpec (contributions welcome!)
|
189
|
+
|
175
190
|
Note on Patches/Pull Requests
|
176
191
|
=============================
|
177
192
|
|
@@ -186,4 +201,4 @@ Note on Patches/Pull Requests
|
|
186
201
|
Copyright
|
187
202
|
=========
|
188
203
|
|
189
|
-
Copyright (c) 2010 Les Hill. See LICENSE for details.
|
204
|
+
Copyright (c) 2010-2011 Les Hill. See LICENSE for details.
|
data/lib/resque_spec.rb
CHANGED
@@ -1,8 +1,63 @@
|
|
1
|
-
require 'resque_spec/
|
2
|
-
require 'resque_spec/resque_scheduler_spec'
|
1
|
+
require 'resque_spec/ext'
|
3
2
|
require 'resque_spec/helpers'
|
4
3
|
require 'resque_spec/matchers'
|
5
4
|
|
5
|
+
module ResqueSpec
|
6
|
+
extend self
|
7
|
+
|
8
|
+
attr_accessor :inline
|
9
|
+
|
10
|
+
def dequeue(queue_name, klass, *args)
|
11
|
+
queue_by_name(queue_name).delete_if do |job|
|
12
|
+
job[:klass] == klass.to_s && args.empty? || job[:args] == args
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def enqueue(queue_name, klass, *args)
|
17
|
+
if inline
|
18
|
+
klass.send(:perform, *args)
|
19
|
+
else
|
20
|
+
queue_by_name(queue_name) << { :klass => klass.to_s, :args => args }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def queue_by_name(name)
|
25
|
+
queues[name]
|
26
|
+
end
|
27
|
+
|
28
|
+
def queue_for(klass)
|
29
|
+
queue_by_name(queue_name(klass))
|
30
|
+
end
|
31
|
+
|
32
|
+
def queue_name(klass)
|
33
|
+
if klass.is_a?(String)
|
34
|
+
klass = Kernel.const_get(klass) rescue nil
|
35
|
+
end
|
36
|
+
|
37
|
+
name_from_instance_var(klass) or
|
38
|
+
name_from_queue_accessor(klass) or
|
39
|
+
raise ::Resque::NoQueueError.new("Jobs must be placed onto a queue.")
|
40
|
+
end
|
41
|
+
|
42
|
+
def queues
|
43
|
+
@queues ||= Hash.new {|h,k| h[k] = []}
|
44
|
+
end
|
45
|
+
|
46
|
+
def reset!
|
47
|
+
queues.clear
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def name_from_instance_var(klass)
|
53
|
+
klass.instance_variable_get(:@queue)
|
54
|
+
end
|
55
|
+
|
56
|
+
def name_from_queue_accessor(klass)
|
57
|
+
klass.respond_to?(:queue) and klass.queue
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
6
61
|
config = RSpec.configuration
|
7
62
|
config.include ResqueSpec::Helpers
|
8
63
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'resque'
|
2
|
+
|
3
|
+
module Resque
|
4
|
+
class Job
|
5
|
+
def self.create(queue, klass, *args)
|
6
|
+
raise ::Resque::NoQueueError.new("Jobs must be placed onto a queue.") if !queue
|
7
|
+
raise ::Resque::NoClassError.new("Jobs must be given a class.") if klass.to_s.empty?
|
8
|
+
ResqueSpec.enqueue(queue, klass, *args)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.destroy(queue, klass, *args)
|
12
|
+
raise ::Resque::NoQueueError.new("Jobs must have been placed onto a queue.") if !queue
|
13
|
+
raise ::Resque::NoClassError.new("Jobs must have been given a class.") if klass.to_s.empty?
|
14
|
+
|
15
|
+
old_count = ResqueSpec.queues[queue].size
|
16
|
+
|
17
|
+
ResqueSpec.dequeue(queue, klass, *args)
|
18
|
+
|
19
|
+
old_count - ResqueSpec.queues[queue].size
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/resque_spec/helpers.rb
CHANGED
@@ -2,26 +2,11 @@ module ResqueSpec
|
|
2
2
|
module Helpers
|
3
3
|
|
4
4
|
def with_resque
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
def enable_perform
|
13
|
-
::Resque.module_eval do
|
14
|
-
def self.enqueue(klass, *args)
|
15
|
-
klass.perform(*args)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def disable_perform
|
21
|
-
::Resque.module_eval do
|
22
|
-
def self.enqueue(klass, *args)
|
23
|
-
::Resque::Job.create(ResqueSpec.queue_name(klass), klass, *args)
|
24
|
-
end
|
5
|
+
begin
|
6
|
+
ResqueSpec.inline = true
|
7
|
+
yield
|
8
|
+
ensure
|
9
|
+
ResqueSpec.inline = false
|
25
10
|
end
|
26
11
|
end
|
27
12
|
end
|
@@ -1,18 +1,16 @@
|
|
1
1
|
require 'resque_spec'
|
2
2
|
|
3
3
|
module ResqueSpec
|
4
|
-
|
5
4
|
def schedule_for(klass)
|
6
5
|
name = "#{queue_name(klass)}_scheduled"
|
7
6
|
queues[name]
|
8
7
|
end
|
9
8
|
|
10
|
-
module
|
9
|
+
module SchedulerExt
|
11
10
|
def enqueue_at(time, klass, *args)
|
12
11
|
ResqueSpec.schedule_for(klass) << {:klass => klass.to_s, :time => time, :args => args}
|
13
12
|
end
|
14
13
|
end
|
15
|
-
|
16
14
|
end
|
17
15
|
|
18
|
-
Resque.extend(ResqueSpec::
|
16
|
+
Resque.extend(ResqueSpec::SchedulerExt)
|
data/lib/resque_spec/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque_spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 9
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 1
|
10
|
-
version: 0.5.1
|
5
|
+
version: 0.6.0
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Les Hill
|
@@ -15,7 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-04-08 00:00:00 -07:00
|
19
14
|
default_executable:
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
@@ -26,12 +21,7 @@ dependencies:
|
|
26
21
|
requirements:
|
27
22
|
- - ">="
|
28
23
|
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 6
|
33
|
-
- 0
|
34
|
-
version: 1.6.0
|
24
|
+
version: 1.15.0
|
35
25
|
type: :runtime
|
36
26
|
version_requirements: *id001
|
37
27
|
- !ruby/object:Gem::Dependency
|
@@ -42,11 +32,6 @@ dependencies:
|
|
42
32
|
requirements:
|
43
33
|
- - ">="
|
44
34
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 27
|
46
|
-
segments:
|
47
|
-
- 2
|
48
|
-
- 5
|
49
|
-
- 0
|
50
35
|
version: 2.5.0
|
51
36
|
type: :runtime
|
52
37
|
version_requirements: *id002
|
@@ -59,10 +44,10 @@ extensions: []
|
|
59
44
|
extra_rdoc_files: []
|
60
45
|
|
61
46
|
files:
|
47
|
+
- lib/resque_spec/ext.rb
|
62
48
|
- lib/resque_spec/helpers.rb
|
63
49
|
- lib/resque_spec/matchers.rb
|
64
|
-
- lib/resque_spec/
|
65
|
-
- lib/resque_spec/resque_spec.rb
|
50
|
+
- lib/resque_spec/scheduler.rb
|
66
51
|
- lib/resque_spec/version.rb
|
67
52
|
- lib/resque_spec.rb
|
68
53
|
- LICENSE
|
@@ -82,20 +67,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
82
67
|
requirements:
|
83
68
|
- - ">="
|
84
69
|
- !ruby/object:Gem::Version
|
85
|
-
hash: 3
|
86
|
-
segments:
|
87
|
-
- 0
|
88
70
|
version: "0"
|
89
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
72
|
none: false
|
91
73
|
requirements:
|
92
74
|
- - ">="
|
93
75
|
- !ruby/object:Gem::Version
|
94
|
-
hash: 23
|
95
|
-
segments:
|
96
|
-
- 1
|
97
|
-
- 3
|
98
|
-
- 6
|
99
76
|
version: 1.3.6
|
100
77
|
requirements: []
|
101
78
|
|
@@ -1,84 +0,0 @@
|
|
1
|
-
require 'resque'
|
2
|
-
|
3
|
-
module ResqueSpec
|
4
|
-
extend self
|
5
|
-
|
6
|
-
def queue_by_name(name)
|
7
|
-
queues[name]
|
8
|
-
end
|
9
|
-
|
10
|
-
def queue_for(klass)
|
11
|
-
queue_by_name(queue_name(klass))
|
12
|
-
end
|
13
|
-
|
14
|
-
def queue_name(klass)
|
15
|
-
if klass.is_a?(String)
|
16
|
-
klass = Kernel.const_get(klass) rescue nil
|
17
|
-
end
|
18
|
-
|
19
|
-
name_from_instance_var(klass) or
|
20
|
-
name_from_queue_accessor(klass) or
|
21
|
-
raise ::Resque::NoQueueError.new("Jobs must be placed onto a queue.")
|
22
|
-
end
|
23
|
-
|
24
|
-
def queues
|
25
|
-
@queues ||= Hash.new {|h,k| h[k] = []}
|
26
|
-
end
|
27
|
-
|
28
|
-
def reset!
|
29
|
-
queues.clear
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def name_from_instance_var(klass)
|
35
|
-
klass.instance_variable_get(:@queue)
|
36
|
-
end
|
37
|
-
|
38
|
-
def name_from_queue_accessor(klass)
|
39
|
-
klass.respond_to?(:queue) and klass.queue
|
40
|
-
end
|
41
|
-
|
42
|
-
module Resque
|
43
|
-
extend self
|
44
|
-
|
45
|
-
def reset!
|
46
|
-
ResqueSpec.reset!
|
47
|
-
end
|
48
|
-
|
49
|
-
module Job
|
50
|
-
extend self
|
51
|
-
|
52
|
-
def self.included(base)
|
53
|
-
base.instance_eval do
|
54
|
-
|
55
|
-
def create(queue, klass, *args)
|
56
|
-
raise ::Resque::NoQueueError.new("Jobs must be placed onto a queue.") if !queue
|
57
|
-
raise ::Resque::NoClassError.new("Jobs must be given a class.") if klass.to_s.empty?
|
58
|
-
ResqueSpec.queues[queue] << {:klass => klass.to_s, :args => args}
|
59
|
-
end
|
60
|
-
|
61
|
-
def destroy(queue, klass, *args)
|
62
|
-
raise ::Resque::NoQueueError.new("Jobs must have been placed onto a queue.") if !queue
|
63
|
-
raise ::Resque::NoClassError.new("Jobs must have been given a class.") if klass.to_s.empty?
|
64
|
-
|
65
|
-
old_count = ResqueSpec.queues[queue].size
|
66
|
-
|
67
|
-
if args.empty?
|
68
|
-
ResqueSpec.queues[queue].delete_if{ |job| job[:klass] == klass.to_s }
|
69
|
-
else
|
70
|
-
ResqueSpec.queues[queue].delete_if{ |job| job[:klass] == klass.to_s and job[:args].to_a == args.to_a }
|
71
|
-
end
|
72
|
-
old_count - ResqueSpec.queues[queue].size
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
end
|
79
|
-
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
Resque.extend ResqueSpec::Resque
|
84
|
-
Resque::Job.send :include, ResqueSpec::Resque::Job
|