lib/stalker.rb in stalker-0.1.0 vs lib/stalker.rb in stalker-0.2.0
- old
+ new
@@ -4,44 +4,41 @@
module Stalker
extend self
def enqueue(job, args={})
- beanstalk.use find_priority(job)
+ beanstalk.use job
beanstalk.put [ job, args ].to_json
end
- def priority(p, &block)
- @@priority = p.to_s
- block.call
- @@priority = nil
- end
-
def job(j, &block)
- @@priority ||= 'default'
- @@priorities ||= {}
- @@priorities[j] = @@priority
-
@@handlers ||= {}
@@handlers[j] = block
end
- def work(priorities=['all'])
- if Array(priorities) == [ 'all' ]
- priorities = @@priorities.values.uniq
+ class NoJobsDefined < RuntimeError; end
+ class NoSuchJob < RuntimeError; end
+
+ def work(jobs=nil)
+ raise NoJobsDefined unless defined?(@@handlers)
+
+ jobs ||= all_jobs
+
+ jobs.each do |job|
+ raise(NoSuchJob, job) unless @@handlers[job]
end
+ log "Working #{jobs.size} jobs :: [ #{jobs.join(' ')} ]"
+
beanstalk.list_tubes_watched.each { |tube| beanstalk.ignore(tube) }
- priorities.each { |priority| beanstalk.watch(priority) }
+ jobs.each { |job| beanstalk.watch(job) }
loop do
work_one_job
end
end
- class NoSuchJob < RuntimeError; end
-
def work_one_job
job = beanstalk.reserve
name, args = JSON.parse job.body
log_job(name, args)
handler = @@handlers[name]
@@ -63,25 +60,10 @@
def log(msg)
puts "[#{Time.now}] #{msg}"
end
- def jobs(priorities=['all'])
- jobs = []
- @@priorities.each do |job, priority|
- jobs << job if priorities == %w(all) or priorities.include? priority
- end
- jobs
- end
-
- class NoJobsDefined < RuntimeError; end
-
- def find_priority(job)
- raise NoJobsDefined unless defined?(@@priorities)
- @@priorities[job] or raise(NoSuchJob, job)
- end
-
def beanstalk
@@beanstalk ||= Beanstalk::Pool.new([ beanstalk_host_and_port ])
end
def beanstalk_url
@@ -103,7 +85,11 @@
e.backtrace.each do |t|
msg << " #{File.expand_path(t).gsub(/#{base}/, '')}"
end
msg.join("\n")
+ end
+
+ def all_jobs
+ @@handlers.keys
end
end