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.
Files changed (5) hide show
  1. data/README.md +11 -0
  2. data/VERSION +1 -1
  3. data/lib/stalker.rb +17 -7
  4. data/test/stalker_test.rb +24 -0
  5. 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.3.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 work(jobs=nil)
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: 19
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 0.3.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-06-29 00:00:00 -07:00
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