class Heartbleed
Constants
- VERSION
Public Class Methods
new(interval)
click to toggle source
# File lib/heartbleed.rb, line 17 def initialize(interval) @interval = interval beat end
raise_when_missed(interval) { |heartbeat| ... }
click to toggle source
# File lib/heartbleed.rb, line 6 def self.raise_when_missed(interval) heartbeat = new(interval) heartbeat.start begin yield heartbeat ensure heartbeat.stop end end
Public Instance Methods
beat()
click to toggle source
# File lib/heartbleed.rb, line 42 def beat @check_at = now + @interval end
start()
click to toggle source
# File lib/heartbleed.rb, line 22 def start mainline = Thread.current @thread = Thread.new do loop do pause = @check_at - now if pause <= 0 mainline.raise Missed break end sleep pause end end end
stop()
click to toggle source
# File lib/heartbleed.rb, line 37 def stop @thread.kill @thread.join end
Private Instance Methods
now()
click to toggle source
# File lib/heartbleed.rb, line 48 def now Process.clock_gettime(Process::CLOCK_MONOTONIC) end