Sha256: f90b589770c9f5e70ad7cfbf382f3bd6f7848f2e68f2d67acce51b488b079520

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

require "vitals/version"
module Vitals
  module Formats;end
  module Reporters;end
  module Integrations
    module Notifications;end
  end
end

require 'vitals/configuration'
require 'vitals/utils'

require 'vitals/reporters/base_reporter'
require 'vitals/reporters/inmem_reporter'
require 'vitals/reporters/console_reporter'
require 'vitals/reporters/multi_reporter'
require 'vitals/reporters/statsd_reporter'
require 'vitals/reporters/dns_resolving_statsd_reporter'

require 'vitals/formats/production_format'
require 'vitals/formats/host_last_format'


module Vitals
  def self.configure!
    @config = Configuration.new
    yield(@config) if block_given?
    @reporter = @config.reporter
    @reporter.format = @config.build_format
  end

  def self.reporter=(r)
    @reporter = r
  end

  def self.reporter
    @reporter
  end

  def self.subscribe!(*modules)
    # give out a list of subscribers too
    modules.map do |mod|
      require "vitals/integrations/notifications/#{ mod }"
      klass = Object.const_get("Vitals::Integrations::Notifications::#{classify(mod)}")
      klass.subscribe!
    end
  end
  #
  # reporter delegators
  #
  # hardwired for performance
  # 
  # TODO timing
  def self.inc(m)
    reporter.inc(m)
  end

  def self.timing(m, val)
    reporter.timing(m, val)
  end

  def self.gauge(m, val)
    reporter.gauge(m, val)
  end

  private
  def self.classify(sym)
    sym.to_s.split('_').collect!{ |w| w.capitalize }.join
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vitals-0.8.0 lib/vitals.rb