lib/fnordmetric/context.rb in fnordmetric-0.7.5 vs lib/fnordmetric/context.rb in fnordmetric-0.9.7

- old
+ new

@@ -1,23 +1,56 @@ 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 - self.instance_eval(&@block) + proxy.instance_eval(&@block) rescue Exception => e - raise e if ENV['FNORDMETRIC_ENV'] == 'test' + 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 @@ -33,33 +66,19 @@ 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) + FnordMetric.error(msg) end - def assure_two_dimensional!(gauge) - return true if gauge.two_dimensional? - error! "error: #{caller[0].split(" ")[-1]} can only be used with 2-dimensional gauges" - end - - def assure_three_dimensional!(gauge) - return true unless gauge.two_dimensional? - error! "error: #{caller[0].split(" ")[-1]} can only be used with 3-dimensional gauges" - end - - def assure_non_progressive!(gauge) - return true unless gauge.progressive? - error! "error: #{caller[0].split(" ")[-1]} can only be used with non-progressive gauges" - end end