stalker 0.1.0 → 0.2.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/VERSION +1 -1
- data/bin/stalk +3 -7
- data/examples/enqueue.rb +0 -3
- data/examples/jobs.rb +7 -11
- data/lib/stalker.rb +18 -32
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/bin/stalk
CHANGED
@@ -2,19 +2,15 @@
|
|
2
2
|
|
3
3
|
require File.dirname(__FILE__) + '/../lib/stalker'
|
4
4
|
|
5
|
-
usage = "stalk <jobs.rb> [<
|
5
|
+
usage = "stalk <jobs.rb> [<job>[,<job>,..]]"
|
6
6
|
file = ARGV.shift or abort usage
|
7
|
-
|
7
|
+
jobs = ARGV.shift.split(',') rescue nil
|
8
8
|
|
9
9
|
require file
|
10
10
|
|
11
|
-
jobs = Stalker.jobs(priorities)
|
12
|
-
puts "Working #{jobs.size} #{priorities.join(', ')} priority jobs: [ #{jobs.join(' ')} ]"
|
13
|
-
|
14
11
|
trap('INT') do
|
15
12
|
puts "\rExiting"
|
16
13
|
exit
|
17
14
|
end
|
18
15
|
|
19
|
-
Stalker.work
|
20
|
-
|
16
|
+
Stalker.work jobs
|
data/examples/enqueue.rb
CHANGED
data/examples/jobs.rb
CHANGED
@@ -3,18 +3,14 @@ require 'stalker'
|
|
3
3
|
|
4
4
|
include Stalker
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
6
|
+
job 'send.email' do |args|
|
7
|
+
log "Sending email to #{args['email']}"
|
8
|
+
end
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
10
|
+
job 'transform.image' do |args|
|
11
|
+
log "Image transform"
|
14
12
|
end
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
puts "Cleaning up"
|
19
|
-
end
|
14
|
+
job 'cleanup.strays' do |args|
|
15
|
+
log "Cleaning up"
|
20
16
|
end
|
data/lib/stalker.rb
CHANGED
@@ -6,40 +6,37 @@ module Stalker
|
|
6
6
|
extend self
|
7
7
|
|
8
8
|
def enqueue(job, args={})
|
9
|
-
beanstalk.use
|
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
|
-
|
29
|
-
|
30
|
-
|
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
|
-
|
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 @@ module Stalker
|
|
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 @@ module Stalker
|
|
106
88
|
|
107
89
|
msg.join("\n")
|
108
90
|
end
|
91
|
+
|
92
|
+
def all_jobs
|
93
|
+
@@handlers.keys
|
94
|
+
end
|
109
95
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Adam Wiggins
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-10 00:00:00 -07:00
|
18
18
|
default_executable: stalk
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|