class Sidewatch::Daemon

Attributes

cloudwatch[RW]
interval[RW]
sidekiq[RW]

Public Class Methods

new(config = {}) click to toggle source
# File lib/sidewatch/daemon.rb, line 11
def initialize(config = {})
  sidekiq_config = config.fetch(:sidekiq){ Hash.new }.symbolize_keys
  self.sidekiq = Sidewatch::Sidekiq.new(sidekiq_config)
  cloudwatch_config = config.fetch(:cloudwatch){ Hash.new }.symbolize_keys
  self.cloudwatch = Sidewatch::Cloudwatch.new(cloudwatch_config)
  self.interval = config.fetch(:interval){ 60 }
end

Public Instance Methods

run() click to toggle source
# File lib/sidewatch/daemon.rb, line 19
def run
  logger.info("Starting #{self.class}...")
  every(interval) do
    metrics = sidekiq.metrics
    logger.info(metrics)
    cloudwatch.send(metrics)
  end
end

Private Instance Methods

every(interval, &block) click to toggle source
# File lib/sidewatch/daemon.rb, line 30
def every(interval, &block)
  loop do
    ts = Time.now
    block.call
    remaining = (ts + interval) - Time.now
    sleep remaining
  end
rescue Interrupt
  logger.info("Interrupted; exiting.")
end
logger() click to toggle source
# File lib/sidewatch/daemon.rb, line 41
def logger
  Sidewatch.logger
end