class Furikake::Monitor
Public Class Methods
new(options)
click to toggle source
Calls superclass method
# File lib/furikake/monitor.rb, line 5 def initialize(options) super(true) $stdout.sync = true @logger = Logger.new($stdout) @flag_int = false @detach = options[:detach] @pid_file = options[:pid] @interval = options[:interval] end
Public Instance Methods
run()
click to toggle source
# File lib/furikake/monitor.rb, line 15 def run begin @logger.info 'furikake monitor を起動します.' daemonize set_trap monitor @logger.warn "furikake monitor を停止しました." File.delete(@pid_file) if File.file?(@pid_file) rescue => e @logger.error "monitor の起動に失敗しました. #{e}" exit 1 end end
Private Instance Methods
daemonize()
click to toggle source
# File lib/furikake/monitor.rb, line 31 def daemonize begin Process.daemon(true, true) if @detach open(@pid_file, 'w') { |f| f << Process.pid } rescue => e @logger.error "monitor のデーモン化に失敗しました. #{e}" exit 1 end end
monitor()
click to toggle source
# File lib/furikake/monitor.rb, line 51 def monitor i = 0 while true if @interval == i publish i = 0 end i += 1 break if @flag_int sleep 1 end end
set_trap()
click to toggle source
# File lib/furikake/monitor.rb, line 41 def set_trap begin Signal.trap(:INT) { @flag_int = true } Signal.trap(:TERM) { @flag_int = true } rescue => e @logger.error "monitor のトラップ設定に失敗しました. #{e}" exit 1 end end