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