Sha256: 2f9ed1eb42b54548213e7100ebf287c2ade7a632d4b890801ba657728f3eaffa
Contents?: true
Size: 944 Bytes
Versions: 1
Compression:
Stored size: 944 Bytes
Contents
module Kryten::Weaver attr_reader :worker attr_accessor :workers def start_work workers.each(&:start_work) if workers if worker && worker.alive? log 'worker already running' return false end @worker = Thread.new { start } end def stop_work workers.each(&:stop_work) if workers stop_running end def workers if block_given? @workers = Array(yield) return self end @workers end end class Kryten::Supervisor def self.start(workers) start_workers(workers) sleep 1 while @started end def self.start_workers(workers) @workers = workers @started = true Signal.trap("INT", proc { self.stop }) workers.each(&:start_work) end def self.stop if @started @workers.each(&:stop_work) sleep 1 while @workers.detect(&:running) @started = false end end def self.running? @workers.detect(&:running) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kryten-0.2.1 | lib/kryten/weaver.rb |