stalker 0.3.0 → 0.4.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 +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
|