Class: Bluth::ScheduleWorker
- Inherits:
-
Storable
- Object
- Storable
- Bluth::ScheduleWorker
- Includes:
- WorkerBase, Daemonizable, Familia, Familia::Stamps, Logging
- Defined in:
- lib/bluth/worker.rb
Class Attribute Summary collapse
-
.interval(v = nil) ⇒ Object
Returns the value of attribute interval.
-
.schedule ⇒ Object
Returns the value of attribute schedule.
-
.timeout ⇒ Object
Returns the value of attribute timeout.
Attributes included from Daemonizable
Class Method Summary collapse
Instance Method Summary collapse
Methods included from Daemonizable
#change_privilege, #daemonize, included, #on_restart, #pid, #restart
Methods included from Logging
#debug, debug, debug?, #log, log, #log_error, log_error, #silent, #silent=, silent?, #trace, trace, trace?
Methods included from WorkerBase
#current_job, included, #init, #kill, #name, #wid, #working!
Class Attribute Details
.interval(v = nil) ⇒ Object
Returns the value of attribute interval.
266 267 268 |
# File 'lib/bluth/worker.rb', line 266 def interval @interval end |
.schedule ⇒ Object
Returns the value of attribute schedule.
266 267 268 |
# File 'lib/bluth/worker.rb', line 266 def schedule @schedule end |
.timeout ⇒ Object
Returns the value of attribute timeout.
266 267 268 |
# File 'lib/bluth/worker.rb', line 266 def timeout @timeout end |
Class Method Details
.every(interval = nil, opts = {}, &blk) ⇒ Object
271 272 273 274 275 276 |
# File 'lib/bluth/worker.rb', line 271 def every interval=nil, opts={}, &blk unless interval.nil? @every << [interval, opts, blk] end @every end |
Instance Method Details
#run ⇒ Object
292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 |
# File 'lib/bluth/worker.rb', line 292 def run begin EM.run { @process_id = $$ srand(Bluth.salt.to_i(16) ** @process_id) Bluth.connect Familia.info "Setting interval: #{Worker.interval} sec (queuetimeout: #{Bluth.queuetimeout})" Familia.reconnect_all! # Need to reconnect after daemonize raise Familia::Problem, "Only 1 scheduler at a time" if !ScheduleWorker.instances.empty? self.class.runblock :onstart save # persist and make note the scheduler is running ScheduleWorker.schedule = Rufus::Scheduler::EmScheduler.start_new self.class.every.each do |args| interval, opts, blk = *args Familia.ld " scheduling every #{interval}: #{opts}" ScheduleWorker.schedule.every interval, opts, &blk end } rescue => ex msg = "#{ex.class}: #{ex.}" puts msg Familia.info ex.backtrace Familia.trace :EXCEPTION, msg, caller[1] if Familia.debug? self.class.runblock :onexit destroy! rescue Interrupt => ex puts $/, "Exiting..." self.class.runblock :onexit destroy! end end |
#run! ⇒ Object
288 289 290 |
# File 'lib/bluth/worker.rb', line 288 def run! run end |