stalker 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +11 -0
- data/VERSION +1 -1
- data/lib/stalker.rb +17 -7
- data/test/stalker_test.rb +24 -0
- metadata +6 -4
data/README.md
CHANGED
@@ -76,6 +76,17 @@ Tidbits
|
|
76
76
|
* The stalk binary is just for convenience, you can also run a worker with a straight Ruby command:
|
77
77
|
$ ruby -r jobs -e Stalker.work
|
78
78
|
|
79
|
+
Running the tests
|
80
|
+
-----------------
|
81
|
+
|
82
|
+
If you wish to hack on Stalker, install these extra gems:
|
83
|
+
|
84
|
+
$ gem install contest mocha turn
|
85
|
+
|
86
|
+
Run the tests:
|
87
|
+
|
88
|
+
$ turn
|
89
|
+
|
79
90
|
Meta
|
80
91
|
----
|
81
92
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/stalker.rb
CHANGED
@@ -5,9 +5,14 @@ require 'uri'
|
|
5
5
|
module Stalker
|
6
6
|
extend self
|
7
7
|
|
8
|
-
def enqueue(job, args={})
|
8
|
+
def enqueue(job, args={}, opts={})
|
9
|
+
pri = opts[:pri] || 65536
|
10
|
+
delay = opts[:delay] || 0
|
11
|
+
ttr = opts[:ttr] || 120
|
9
12
|
beanstalk.use job
|
10
|
-
beanstalk.put [ job, args ].to_json
|
13
|
+
beanstalk.put [ job, args ].to_json, pri, delay, ttr
|
14
|
+
rescue Beanstalk::NotConnected => e
|
15
|
+
failed_connection(e)
|
11
16
|
end
|
12
17
|
|
13
18
|
def job(j, &block)
|
@@ -18,7 +23,7 @@ module Stalker
|
|
18
23
|
class NoJobsDefined < RuntimeError; end
|
19
24
|
class NoSuchJob < RuntimeError; end
|
20
25
|
|
21
|
-
def
|
26
|
+
def prep(jobs=nil)
|
22
27
|
raise NoJobsDefined unless defined?(@@handlers)
|
23
28
|
|
24
29
|
jobs ||= all_jobs
|
@@ -34,14 +39,15 @@ module Stalker
|
|
34
39
|
beanstalk.list_tubes_watched.each do |server, tubes|
|
35
40
|
tubes.each { |tube| beanstalk.ignore(tube) unless jobs.include?(tube) }
|
36
41
|
end
|
37
|
-
|
38
|
-
loop do
|
39
|
-
work_one_job
|
40
|
-
end
|
41
42
|
rescue Beanstalk::NotConnected => e
|
42
43
|
failed_connection(e)
|
43
44
|
end
|
44
45
|
|
46
|
+
def work(jobs=nil)
|
47
|
+
prep(jobs)
|
48
|
+
loop { work_one_job }
|
49
|
+
end
|
50
|
+
|
45
51
|
def work_one_job
|
46
52
|
job = beanstalk.reserve
|
47
53
|
name, args = JSON.parse job.body
|
@@ -121,4 +127,8 @@ module Stalker
|
|
121
127
|
def all_jobs
|
122
128
|
@@handlers.keys
|
123
129
|
end
|
130
|
+
|
131
|
+
def clear!
|
132
|
+
@@handlers = nil
|
133
|
+
end
|
124
134
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../lib/stalker'
|
2
|
+
require 'contest'
|
3
|
+
require 'mocha'
|
4
|
+
|
5
|
+
module Stalker
|
6
|
+
def log(msg)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class StalkerTest < Test::Unit::TestCase
|
11
|
+
setup do
|
12
|
+
Stalker.clear!
|
13
|
+
$result = -1
|
14
|
+
end
|
15
|
+
|
16
|
+
test "enqueue and work a job" do
|
17
|
+
val = rand(999999)
|
18
|
+
Stalker.job('my.job') { |args| $result = args['val'] }
|
19
|
+
Stalker.enqueue('my.job', :val => val)
|
20
|
+
Stalker.prep
|
21
|
+
Stalker.work_one_job
|
22
|
+
assert_equal val, $result
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stalker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 4
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Adam Wiggins
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-07-29 00:00:00 -07:00
|
19
19
|
default_executable: stalk
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -60,6 +60,7 @@ files:
|
|
60
60
|
- VERSION
|
61
61
|
- bin/stalk
|
62
62
|
- lib/stalker.rb
|
63
|
+
- test/stalker_test.rb
|
63
64
|
- examples/enqueue.rb
|
64
65
|
- examples/jobs.rb
|
65
66
|
has_rdoc: true
|
@@ -97,5 +98,6 @@ signing_key:
|
|
97
98
|
specification_version: 3
|
98
99
|
summary: A job queueing and background workers system using Beanstalkd.
|
99
100
|
test_files:
|
101
|
+
- test/stalker_test.rb
|
100
102
|
- examples/enqueue.rb
|
101
103
|
- examples/jobs.rb
|