resque-batched-job 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +1 -1
- data/README.markdown +9 -10
- data/Rakefile +1 -4
- data/lib/resque/plugins/batched_job/version.rb +1 -1
- data/lib/resque/plugins/batched_job.rb +2 -2
- data/test/test_batched_job.rb +35 -18
- metadata +31 -52
data/LICENSE
CHANGED
data/README.markdown
CHANGED
@@ -15,15 +15,14 @@ Example
|
|
15
15
|
-------
|
16
16
|
|
17
17
|
module Job
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
18
|
+
extend Resque::Plugins::BatchedJob
|
19
|
+
|
20
|
+
def self.perform(id, *args)
|
21
|
+
prime(id, args)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.after_batch_heavy_lifting(id, *args)
|
25
|
+
heavy_lifting(id)
|
26
|
+
end
|
28
27
|
|
29
28
|
end
|
data/Rakefile
CHANGED
@@ -2,19 +2,16 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'rake/testtask'
|
4
4
|
|
5
|
-
$:.unshift(File.dirname(__FILE__))
|
6
|
-
|
7
5
|
task :default => :test
|
8
6
|
|
9
7
|
Rake::TestTask.new do |task|
|
10
|
-
task.libs << 'lib'
|
11
8
|
task.pattern = 'test/test_*.rb'
|
12
9
|
task.verbose = true
|
13
10
|
end
|
14
11
|
|
15
12
|
desc "Publish gem and source."
|
16
13
|
task :publish => :build do
|
17
|
-
require 'lib/resque/plugins/batched_job/version'
|
14
|
+
require File.dirname(__FILE__) + '/lib/resque/plugins/batched_job/version'
|
18
15
|
sh "gem push resque-batched-job-#{Resque::Plugins::BatchedJob::VERSION}.gem"
|
19
16
|
sh "git tag v#{Resque::Plugins::BatchedJob::VERSION}"
|
20
17
|
sh "git push origin v#{Resque::Plugins::BatchedJob::VERSION}"
|
@@ -25,7 +25,7 @@ module Resque
|
|
25
25
|
#
|
26
26
|
# Batch the job. The first argument of a batched job, is the batch id.
|
27
27
|
def after_enqueue_batch(id, *args)
|
28
|
-
redis.sadd(batch(id), encode(args))
|
28
|
+
redis.sadd(batch(id), encode(args.insert(0, self.name)))
|
29
29
|
end
|
30
30
|
|
31
31
|
=begin
|
@@ -46,7 +46,7 @@ module Resque
|
|
46
46
|
begin
|
47
47
|
yield
|
48
48
|
ensure
|
49
|
-
redis.srem(batch(id), "#{encode(args)}")
|
49
|
+
redis.srem(batch(id), "#{encode(args.insert(0, self.name))}")
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
data/test/test_batched_job.rb
CHANGED
@@ -1,45 +1,62 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'test/unit'
|
3
3
|
require 'resque'
|
4
|
-
|
5
|
-
$:.unshift(File.dirname(__FILE__) + '../lib')
|
6
|
-
|
7
|
-
require 'resque/plugins/batched_job'
|
4
|
+
require 'resque-batched-job'
|
8
5
|
|
9
6
|
class Job
|
10
|
-
|
11
7
|
extend Resque::Plugins::BatchedJob
|
12
|
-
|
13
8
|
@queue = :test
|
14
9
|
|
15
|
-
def self.perform(batch_id)
|
16
|
-
$stdout.puts "perform batch[#{batch_id}]"
|
17
|
-
sleep 1
|
10
|
+
def self.perform(batch_id, arg)
|
18
11
|
end
|
19
12
|
|
20
|
-
def self.after_batch_hook(batch_id)
|
21
|
-
$
|
22
|
-
sleep 1
|
13
|
+
def self.after_batch_hook(batch_id, arg)
|
14
|
+
$batch_complete = true
|
23
15
|
end
|
24
16
|
|
25
17
|
end
|
26
18
|
|
27
19
|
class BatchedJobTest < Test::Unit::TestCase
|
28
20
|
|
21
|
+
def setup
|
22
|
+
$batch_complete = false
|
23
|
+
@batch_id = :foo
|
24
|
+
@batch = "batch:#{@batch_id}"
|
25
|
+
@cnt = 5
|
26
|
+
@cnt.times { Resque.enqueue(Job, @batch_id, "arg#{rand(100)}") }
|
27
|
+
end
|
28
|
+
|
29
|
+
def teardown
|
30
|
+
redis.del(@batch)
|
31
|
+
redis.del("queue:test")
|
32
|
+
end
|
33
|
+
|
29
34
|
def test_list
|
30
35
|
assert_nothing_raised do
|
31
36
|
Resque::Plugin.lint(Resque::Plugins::BatchedJob)
|
32
37
|
end
|
33
38
|
end
|
34
39
|
|
35
|
-
def
|
36
|
-
assert_equal(
|
40
|
+
def test_batch_key
|
41
|
+
assert_equal(@batch, Job.batch(@batch_id))
|
37
42
|
end
|
38
43
|
|
39
|
-
def
|
40
|
-
|
41
|
-
worker = Resque::Worker.new(:test)
|
42
|
-
worker.work
|
44
|
+
def test_batch_size
|
45
|
+
assert_equal(@cnt, redis.smembers(@batch).size)
|
43
46
|
end
|
47
|
+
|
48
|
+
def test_batch_hook
|
49
|
+
assert_nothing_raised do
|
50
|
+
@cnt.times { Resque.reserve(:test).perform }
|
51
|
+
end
|
52
|
+
assert($batch_complete)
|
53
|
+
assert_equal(false, redis.exists(@batch))
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def redis
|
59
|
+
Resque.redis
|
60
|
+
end
|
44
61
|
|
45
62
|
end
|
metadata
CHANGED
@@ -1,47 +1,34 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-batched-job
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 4
|
9
|
-
version: 0.1.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.5
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Daniel Johnston
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-10-22 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: resque
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70235562803180 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 1
|
30
|
-
- 10
|
31
|
-
- 0
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
32
21
|
version: 1.10.0
|
33
22
|
type: :runtime
|
34
|
-
|
35
|
-
|
36
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70235562803180
|
25
|
+
description: ! " Resque plugin for batching jobs. When a batch/group of jobs are
|
26
|
+
complete, \nadditional work can be performed usings batch hooks.\n"
|
37
27
|
email: dan@dj-agiledev.com
|
38
28
|
executables: []
|
39
|
-
|
40
29
|
extensions: []
|
41
|
-
|
42
30
|
extra_rdoc_files: []
|
43
|
-
|
44
|
-
files:
|
31
|
+
files:
|
45
32
|
- LICENSE
|
46
33
|
- Rakefile
|
47
34
|
- README.markdown
|
@@ -49,37 +36,29 @@ files:
|
|
49
36
|
- lib/resque/plugins/batched_job.rb
|
50
37
|
- lib/resque-batched-job.rb
|
51
38
|
- test/test_batched_job.rb
|
52
|
-
|
53
|
-
homepage: http://github.com/djohnston/resque-batched-job
|
39
|
+
homepage: https://github.com/drfeelngood/resque-batched-job
|
54
40
|
licenses: []
|
55
|
-
|
56
41
|
post_install_message:
|
57
42
|
rdoc_options: []
|
58
|
-
|
59
|
-
require_paths:
|
43
|
+
require_paths:
|
60
44
|
- lib
|
61
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
46
|
none: false
|
63
|
-
requirements:
|
64
|
-
- -
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
|
67
|
-
|
68
|
-
version: "0"
|
69
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ! '>='
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '0'
|
51
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
52
|
none: false
|
71
|
-
requirements:
|
72
|
-
- -
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
|
75
|
-
- 0
|
76
|
-
version: "0"
|
53
|
+
requirements:
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
77
57
|
requirements: []
|
78
|
-
|
79
58
|
rubyforge_project:
|
80
|
-
rubygems_version: 1.
|
59
|
+
rubygems_version: 1.8.11
|
81
60
|
signing_key:
|
82
61
|
specification_version: 3
|
83
62
|
summary: Resque plugin
|
84
|
-
test_files:
|
63
|
+
test_files:
|
85
64
|
- test/test_batched_job.rb
|