Sha256: 3444d23662f00d9f79463dd881e200ea56324e0b33bb6889bca1e23f49749273
Contents?: true
Size: 1.52 KB
Versions: 3
Compression:
Stored size: 1.52 KB
Contents
class FnordMetric::Context include FnordMetric::GaugeModifiers class Proxy def initialize(_ref) @ref = _ref end def method_missing(method, *args, &block) @ref.dispatch(method, *args, &block) end end def initialize(opts, block) @block = block @opts = opts end def call(event, redis) @redis = redis @event = event proxy.instance_eval(&@block) rescue Exception => e raise e if ENV['FNORDMETRIC_ENV'] == 'test' puts "error: #{e.message}" puts e.backtrace.push("").join("\n") if ENV['FNORDMETRIC_ENV'] == 'dev' end def proxy @proxy ||= Proxy.new(self) end def dispatch(method, *args, &block) if args.size > 0 && @opts[:gauges][args[0]].try(:renderable?) @opts[:gauges][args.delete_at(0)].execute(method, *args.unshift(self), &block) else send(method, *args, &block) end rescue Exception => e raise e if ENV['FNORDMETRIC_ENV'] == 'test' puts "error: #{e.message}" puts e.backtrace.push("\n").join("\n") if ENV['FNORDMETRIC_ENV'] == 'dev' end def redis_exec(*args) @redis.send(*args) end private def session_key @event[:_session_key] end def data @event end def key(gauge) fetch_gauge(gauge).key end def time @event[:_time].to_i end protected def fetch_gauge(_gauge) _gauge.is_a?(FnordMetric::Gauge) ? _gauge : @opts[:gauges].fetch(_gauge) rescue error! "error: gauge '#{_gauge}' is undefined" end def error!(msg) FnordMetric.error(msg) end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
fnordmetric-1.0.1 | lib/fnordmetric/context.rb |
fnordmetric-1.0.0 | lib/fnordmetric/context.rb |
fnordmetric-0.9.7 | lib/fnordmetric/context.rb |