module Jober
Constants
- VERSION
Attributes
namespace[RW]
Public Class Methods
add_class(klass)
click to toggle source
# File lib/jober.rb, line 60 def add_class(klass) classes << klass unless internal_classes_names.include?(klass.to_s) end
after_fork(&block)
click to toggle source
# File lib/jober.rb, line 64 def after_fork(&block) @after_fork = block end
auto_classes()
click to toggle source
# File lib/jober.rb, line 52 def auto_classes classes.reject &:manual? end
call_after_fork()
click to toggle source
# File lib/jober.rb, line 68 def call_after_fork @after_fork.call if @after_fork end
catch() { || ... }
click to toggle source
# File lib/jober.rb, line 158 def catch(&block) yield rescue Object => ex Jober.exception(ex) nil end
classes()
click to toggle source
# File lib/jober.rb, line 48 def classes @classes ||= [] end
default_interval()
click to toggle source
# File lib/jober.rb, line 146 def default_interval @default_interval ||= 5 * 60 end
default_interval=(di)
click to toggle source
# File lib/jober.rb, line 150 def default_interval=(di) @default_interval = di end
dump(obj)
click to toggle source
# File lib/jober.rb, line 72 def dump(obj) Marshal.dump(obj) end
dump_args(*args)
click to toggle source
# File lib/jober.rb, line 80 def dump_args(*args) dump(args) end
enqueue(queue_name, *args)
click to toggle source
# File lib/jober.rb, line 154 def enqueue(queue_name, *args) Jober.redis.rpush(queue_name, Jober.dump_args(*args)) end
exception(ex)
click to toggle source
# File lib/jober.rb, line 84 def exception(ex) # redefine me logger.error "#{ex.message} #{ex.backtrace}" end
find_class(klass_name)
click to toggle source
# File lib/jober.rb, line 133 def find_class(klass_name) names = classes.map(&:to_s) return eval(klass_name) if names.include?(klass_name) klass_name = "Jober::#{klass_name}" return eval(klass_name) if names.include?(klass_name) klass_name = "Jobs::#{klass_name}" return eval(klass_name) if names.include?(klass_name) end
internal_classes_names()
click to toggle source
# File lib/jober.rb, line 43 def internal_classes_names @internal_classes_names ||= (%w{Manager ThreadedManager AbstractTask Task Queue SlowQueue} + %w{QueueBatch UniqueQueue UniqueQueueBatch Logger SharedObject ARLoop Exception}).map { |k| "Jober::#{k}" } end
key(k)
click to toggle source
# File lib/jober.rb, line 129 def key(k) "Jober:#{@namespace}:#{k}" end
llens()
click to toggle source
# File lib/jober.rb, line 100 def llens h = {} auto_classes.each do |klass| next unless klass.ancestors.include?(Jober::Queue) h[klass.queue_name_base] = klass.len end h end
load(obj)
click to toggle source
# File lib/jober.rb, line 76 def load(obj) Marshal.load(obj) end
logger()
click to toggle source
# File lib/jober.rb, line 22 def logger @logger ||= ::Logger.new(STDOUT) end
logger=(l)
click to toggle source
# File lib/jober.rb, line 26 def logger=(l) @logger = l end
names()
click to toggle source
# File lib/jober.rb, line 56 def names classes.map { |k| underscore(k.to_s.gsub('Jober::', '')) } end
redis()
click to toggle source
# File lib/jober.rb, line 30 def redis Thread.current[:__jober_redis__] ||= (@redis || Redis.new).dup end
redis=(r)
click to toggle source
# File lib/jober.rb, line 34 def redis=(r) @redis = r reset_redis end
reset_redis()
click to toggle source
# File lib/jober.rb, line 39 def reset_redis Thread.current[:__jober_redis__] = nil end
skip_delay!()
click to toggle source
# File lib/jober.rb, line 142 def skip_delay! classes.each &:skip_delay! end
stats()
click to toggle source
# File lib/jober.rb, line 109 def stats h = {} auto_classes.each do |klass| started = klass.read_timestamp(:started) finished = klass.read_timestamp(:finished) crashed = klass.read_timestamp(:crashed) stopped = klass.read_timestamp(:stopped) h[klass.short_name] = { :started => started, :finished => finished, :crashed => crashed, :stopped => stopped, :duration => (finished && started && finished >= started) ? (finished - started) : nil } end h end
underscore(str)
click to toggle source
# File lib/jober.rb, line 89 def underscore(str) word = str.dup word.gsub!('::', '/') word.gsub!(/(?:([A-Za-z\d])|^)((?=a)b)(?=\b|[^a-z])/) { "#{$1}#{$1 && '_'}#{$2.downcase}" } word.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2') word.gsub!(/([a-z\d])([A-Z])/,'\1_\2') word.tr!("-", "_") word.downcase! word end