Sha256: 463430bf81fadd6fc821a160a89a40701df8e1aee42f87dcd30cc8350e585d68
Contents?: true
Size: 1.77 KB
Versions: 1
Compression:
Stored size: 1.77 KB
Contents
require 'active_support' module ActionTracker module Concerns # nodoc module Tracker extend ::ActiveSupport::Concern included do helper ActionTracker::Helpers::Render before_filter :initialize_session after_filter :conditional_track_event end def render(*args) track_event session[:action_tracked] = true super end private def conditional_track_event track_event unless session[:action_tracked] end def initialize_session session[:action_tracked] = false end def track_event return unless ActionTracker.configuration.track_events session[:action_tracker] ||= [] session[:action_tracker] << tracker_params unless tracker_params.blank? end def tracker_klass @tracker_klass ||= "#{namespace}#{controller_name.camelize}Tracker" end def resource @resource ||= method(find_resource).call if find_resource end def find_resource @resource_method ||= Devise.mappings.keys.map { |resource| "current_#{resource}" } .select { |method_name| !method(method_name).call.nil? } .first rescue NameError nil end def tracker_instance @tracker_instance ||= Object.const_get(tracker_klass, false).new(resource, self) rescue NameError nil end def tracker_params @tracker_params ||= tracker_exists? ? tracker_instance.method(action_name).call : nil end def tracker_exists? tracker_instance && tracker_instance.respond_to?(action_name) end def namespace self.class.name.deconstantize.try(:+, '::') end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
action_tracker-0.1.3 | lib/action_tracker/concerns/tracker.rb |