Sha256: 0670470da246dc49208f011032caec3e708ea3e2056c007abf7cdd65cbf860a4

Contents?: true

Size: 1.57 KB

Versions: 2

Compression:

Stored size: 1.57 KB

Contents

require 'statsd'

module Fozzie
  module Classes

    class AbstractFozzie < Statsd
      attr_reader :prefix

      def initialize(host, port, prefix = nil)
        @namespace = prefix unless prefix.nil?
        super host, port
      end

      def time_to_do(stat, sample_rate=1, &block); time_for(stat, sample_rate, &block); end
      def time_for(stat, sample_rate=1, &block)
        stat = stat.flatten.join('.') if stat.kind_of?(Array)
        time(stat, sample_rate, &block)
      end

      def committed; commit; end
      def commit
        event :commit
      end

      def build; built; end
      def built
        event :build
      end

      def deploy(app = nil); deployed(app); end
      def deployed(app = nil)
        event :deploy, app
      end

      def increment_on(stat, perf, sample_rate=1)
        key = "#{stat}.%s" % (perf ? "success" : "fail")
        increment(key, sample_rate)
        perf
      end

      private

      def event(type, app = nil)
        stat = "event.#{type.to_s}"
        stat << ".#{app}" unless app.nil?
        timing stat, Time.now.usec
      end

      def send_to_socket(message)
        begin
          super(message)
        rescue SocketError => exc
          nil
        end
      end

    end

    NAMESPACES = %w{Stats S Statistics Warehouse}

    def self.included(klass)
      host, port, prefix = Fozzie.c.host, Fozzie.c.port, Fozzie.c.data_prefix
      NAMESPACES.each do |klas|
        # set a constant
        Kernel.const_set(klas, AbstractFozzie.new(host, port, prefix)) unless const_defined?(klas)
      end
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fozzie-0.0.12 lib/fozzie/classes.rb
fozzie-0.0.11 lib/fozzie/classes.rb