@@ -6,40 +6,37 @@ module Stalker
6
6
extend self
7
7
8
8
def enqueue ( job , args = { } )
9
- beanstalk . use find_priority ( job )
9
+ beanstalk . use job
10
10
beanstalk . put [ job , args ] . to_json
11
11
end
12
12
13
- def priority ( p , &block )
14
- @@priority = p . to_s
15
- block . call
16
- @@priority = nil
17
- end
18
-
19
13
def job ( j , &block )
20
- @@priority ||= 'default'
21
- @@priorities ||= { }
22
- @@priorities [ j ] = @@priority
23
-
24
14
@@handlers ||= { }
25
15
@@handlers [ j ] = block
26
16
end
27
17
28
- def work ( priorities = [ 'all' ] )
29
- if Array ( priorities ) == [ 'all' ]
30
- priorities = @@priorities . values . uniq
18
+ class NoJobsDefined < RuntimeError ; end
19
+ class NoSuchJob < RuntimeError ; end
20
+
21
+ def work ( jobs = nil )
22
+ raise NoJobsDefined unless defined? ( @@handlers )
23
+
24
+ jobs ||= all_jobs
25
+
26
+ jobs . each do |job |
27
+ raise ( NoSuchJob , job ) unless @@handlers [ job ]
31
28
end
32
29
30
+ log "Working #{ jobs . size } jobs :: [ #{ jobs . join ( ' ' ) } ]"
31
+
33
32
beanstalk . list_tubes_watched . each { |tube | beanstalk . ignore ( tube ) }
34
- priorities . each { |priority | beanstalk . watch ( priority ) }
33
+ jobs . each { |job | beanstalk . watch ( job ) }
35
34
36
35
loop do
37
36
work_one_job
38
37
end
39
38
end
40
39
41
- class NoSuchJob < RuntimeError ; end
42
-
43
40
def work_one_job
44
41
job = beanstalk . reserve
45
42
name , args = JSON . parse job . body
@@ -65,21 +62,6 @@ def log(msg)
65
62
puts "[#{ Time . now } ] #{ msg } "
66
63
end
67
64
68
- def jobs ( priorities = [ 'all' ] )
69
- jobs = [ ]
70
- @@priorities . each do |job , priority |
71
- jobs << job if priorities == %w( all ) or priorities . include? priority
72
- end
73
- jobs
74
- end
75
-
76
- class NoJobsDefined < RuntimeError ; end
77
-
78
- def find_priority ( job )
79
- raise NoJobsDefined unless defined? ( @@priorities )
80
- @@priorities [ job ] or raise ( NoSuchJob , job )
81
- end
82
-
83
65
def beanstalk
84
66
@@beanstalk ||= Beanstalk ::Pool . new ( [ beanstalk_host_and_port ] )
85
67
end
@@ -106,4 +88,8 @@ def exception_message(e)
106
88
107
89
msg . join ( "\n " )
108
90
end
91
+
92
+ def all_jobs
93
+ @@handlers . keys
94
+ end
109
95
end
0 commit comments