def self.install!(options, user_options)
analytics_logger = options["analytics_logger"]
app_group_name = options["app_group_name"]
return false if !analytics_logger || !options["analytics"]
GC.enable_stats if GC.respond_to?(:enable_stats)
subscriber = self.new(user_options)
AnalyticsLogging.attach_to(:action_controller, subscriber)
AnalyticsLogging.attach_to(:active_record, subscriber)
if defined?(ActiveSupport::Cache::Store)
ActiveSupport::Cache::Store.instrument = true
AnalyticsLogging.attach_to(:active_support, subscriber)
end
PhusionPassenger.on_event(:starting_request_handler_thread) do
if defined?(ActiveSupport::Cache::Store)
ActiveSupport::Cache::Store.instrument = true
end
end
if defined?(ActionDispatch::DebugExceptions)
exceptions_middleware = ActionDispatch::DebugExceptions
elsif defined?(ActionDispatch::ShowExceptions)
exceptions_middleware = ActionDispatch::ShowExceptions
end
if exceptions_middleware
Rails.application.middleware.insert_after(
exceptions_middleware,
ExceptionLogger, analytics_logger, app_group_name)
end
if defined?(ActionController::Base)
ActionController::Base.class_eval do
include ACExtension
end
end
if defined?(ActiveSupport::Benchmarkable)
ActiveSupport::Benchmarkable.class_eval do
include ASBenchmarkableExtension
alias_method_chain :benchmark, :passenger
end
end
return true
end