stalker 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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