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