class Rack::Tracker::HandlerDelegator

Attributes

env[RW]

Public Class Methods

handler(method_name) click to toggle source
# File lib/rack/tracker/handler_delegator.rb, line 3
def handler(method_name)
  new.handler(method_name)
end
new(env = {}) click to toggle source
# File lib/rack/tracker/handler_delegator.rb, line 10
def initialize(env = {})
  @env = env
end

Public Instance Methods

handler(method_name) click to toggle source
# File lib/rack/tracker/handler_delegator.rb, line 26
def handler(method_name)
  return method_name if method_name.kind_of?(Class)

  _handler = method_name.to_s.camelize
  ["Rack::Tracker::#{_handler}", _handler].detect do |const|
    begin
      return const.constantize
    rescue NameError
      false
    end
  end

  raise ArgumentError, "No such Handler: #{_handler}"
end
method_missing(method_name, *args, &block) click to toggle source
Calls superclass method
# File lib/rack/tracker/handler_delegator.rb, line 14
def method_missing(method_name, *args, &block)
  if respond_to?(method_name)
    handler(method_name).process_track(env, method_name, *args, &block)
  else
    super
  end
end
respond_to?(method_name, include_private = false) click to toggle source
# File lib/rack/tracker/handler_delegator.rb, line 22
def respond_to?(method_name, include_private = false)
  handler(method_name).respond_to?(:track, include_private)
end