Module: Bluth

Defined in:
lib/bluth.rb,
lib/bluth.rb,
lib/bluth.rb,
lib/bluth.rb,
lib/bluth/cli.rb,
lib/bluth/worker.rb

Defined Under Namespace

Modules: Handler, Queue, VERSION, WorkerBase Classes: Buster, CLI, Gob, Maeby, ScheduleWorker, Shutdown, Worker

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.confObject (readonly)

Returns the value of attribute conf.



45
46
47
# File 'lib/bluth.rb', line 45

def conf
  @conf
end

.dbObject (readonly)

Returns the value of attribute db.



45
46
47
# File 'lib/bluth.rb', line 45

def db
  @db
end

.envObject

Returns the value of attribute env.



46
47
48
# File 'lib/bluth.rb', line 46

def env
  @env
end

.handlersObject (readonly)

Returns the value of attribute handlers.



45
46
47
# File 'lib/bluth.rb', line 45

def handlers
  @handlers
end

.locksObject (readonly)

Returns the value of attribute locks.



45
46
47
# File 'lib/bluth.rb', line 45

def locks
  @locks
end

.priorityObject

Returns the value of attribute priority.



46
47
48
# File 'lib/bluth.rb', line 46

def priority
  @priority
end

.queuetimeoutObject

Returns the value of attribute queuetimeout.



46
47
48
# File 'lib/bluth.rb', line 46

def queuetimeout
  @queuetimeout
end

.redisObject

Returns the value of attribute redis.



46
47
48
# File 'lib/bluth.rb', line 46

def redis
  @redis
end

.saltObject (readonly)

Returns the value of attribute salt.



23
24
25
# File 'lib/bluth/worker.rb', line 23

def salt
  @salt
end

.schedulerObject

Returns the value of attribute scheduler.



46
47
48
# File 'lib/bluth.rb', line 46

def scheduler
  @scheduler
end

.uriObject

Returns the value of attribute uri.



46
47
48
# File 'lib/bluth.rb', line 46

def uri
  @uri
end

Class Method Details

.clear_locksObject



71
72
73
74
75
76
# File 'lib/bluth.rb', line 71

def Bluth.clear_locks
  @locks.each { |lock| 
    Familia.info "Removing lock #{lock}"
    Bluth.redis.del lock 
  }
end

.connectObject



66
67
68
# File 'lib/bluth.rb', line 66

def connect
  instance_eval &onconnect unless onconnect.nil?
end

.find_locksObject



77
78
79
# File 'lib/bluth.rb', line 77

def Bluth.find_locks
  @locks = Bluth.redis.keys(Familia.rediskey('*', :lock))
end

.onconnect(&blk) ⇒ Object

A block to be called before a worker starts.

e.g.

Bluth.onconnect do
  config = YourProject.load_config
  Familia.uri = config[:redis_uri]
end

Note: this block can be called multiple times so do not put anything with side effects in here.



62
63
64
65
# File 'lib/bluth.rb', line 62

def onconnect &blk
  @onconnect = blk unless blk.nil?
  @onconnect
end

.popObject



129
130
131
# File 'lib/bluth.rb', line 129

def Bluth.pop
  blocking_queue_handler :brpop
end

.queue(n) ⇒ Object

Raises:

  • (ArgumentError)


84
85
86
87
# File 'lib/bluth.rb', line 84

def Bluth.queue(n)
  raise ArgumentError, "No such queue: #{n}" unless queue?(n)
  Bluth::Queue.send n
end

.queue?(n) ⇒ Boolean

Returns:

  • (Boolean)


81
82
83
# File 'lib/bluth.rb', line 81

def Bluth.queue?(n)
  Bluth::Queue.queues.collect(&:name).member?(n.to_s.to_sym)
end

.shiftObject

Workers use a blocking pop and will wait for up to Bluth.queuetimeout (seconds) before returnning nil. Note that the queues are still processed in order. If all queues are empty, the first one to return a value is use. See:

code.google.com/p/redis/wiki/BlpopCommand



125
126
127
# File 'lib/bluth.rb', line 125

def Bluth.shift
  blocking_queue_handler :blpop
end

.sysinfoObject



47
48
49
50
# File 'lib/bluth.rb', line 47

def sysinfo
  @sysinfo ||= SysInfo.new.freeze
  @sysinfo 
end