45: def self.install!(options)
46: @@analytics_logger = options["analytics_logger"]
47:
48:
49: GC.enable_stats if GC.respond_to?(:enable_stats)
50:
51: if defined?(ActionController)
52: require 'phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension'
53: ActionController::Base.class_eval do
54: include ACBaseExtension
55: alias_method_chain :perform_action, :passenger
56: alias_method_chain :render, :passenger
57: end
58:
59: require 'phusion_passenger/classic_rails_extensions/analytics_logging/ac_benchmarking_extension'
60: ActionController::Benchmarking::ClassMethods.class_eval do
61: include ACBenchmarkingExtension
62: alias_method_chain :benchmark, :passenger
63: end
64:
65: require 'phusion_passenger/classic_rails_extensions/analytics_logging/ac_rescue_extension'
66: ActionController::Rescue.class_eval do
67: include ACRescueExtension
68: alias_method_chain :rescue_action, :passenger
69: end
70: end
71:
72: if defined?(ActionView)
73: require 'phusion_passenger/classic_rails_extensions/analytics_logging/av_benchmark_helper_extension'
74: ActionView::Helpers::BenchmarkHelper.class_eval do
75: include AVBenchmarkHelperExtension
76: alias_method_chain :benchmark, :passenger
77: end
78: end
79:
80: if defined?(ActiveRecord)
81: require 'phusion_passenger/classic_rails_extensions/analytics_logging/ar_abstract_adapter_extension'
82: ActiveRecord::ConnectionAdapters::AbstractAdapter.class_eval do
83: include ARAbstractAdapterExtension
84: alias_method_chain :log, :passenger
85: end
86: end
87:
88: if defined?(ActiveSupport::Cache::Store) && Rails.cache
89: require 'phusion_passenger/classic_rails_extensions/analytics_logging/as_cache_extension'
90: ActiveSupport::Cache::Store.class_eval do
91: include CacheStoreExtension
92: case Rails::VERSION::MINOR
93: when 1
94:
95: alias_method :fetch, :fetch_2_1
96: when 2
97:
98: alias_method :fetch, :fetch_2_2
99: when 3
100:
101: alias_method :fetch, :fetch_2_3
102: end
103: end
104: Rails.cache.extend(ConcreteCacheStoreExtension)
105: end
106: end