lib/rack/tracker/handler.rb in rack-tracker-1.5.0 vs lib/rack/tracker/handler.rb in rack-tracker-1.6.0
- old
+ new
@@ -11,10 +11,13 @@
end
class_attribute :position
self.position = :head
+ class_attribute :allowed_tracker_options
+ self.allowed_tracker_options = []
+
attr_accessor :options
attr_accessor :env
# Allow javascript escaping in view templates
include Rack::Tracker::JavaScriptHelper
@@ -53,7 +56,31 @@
end
end
def handler_name
self.class.name.demodulize.underscore
+ end
+
+ def tracker_options
+ @_tracker_options ||= {}.tap do |tracker_options|
+ options.slice(*allowed_tracker_options).each do |key, value|
+ if option_value = value.respond_to?(:call) ? value.call(env) : value
+ tracker_options[tracker_option_key(key)] = tracker_option_value(option_value)
+ end
+ end
+ end
+ end
+
+ private
+
+ # Transformations to be applied to tracker option keys.
+ # Override in descendants, if necessary.
+ def tracker_option_key(key)
+ key.to_sym
+ end
+
+ # Transformations to be applied to tracker option values.
+ # Override in descendants, if necessary.
+ def tracker_option_value(value)
+ value
end
end