class PhusionPassenger::Rails3Extensions::AnalyticsLogging

def self.install!(options)

def self.install!(options)
	analytics_logger = options["analytics_logger"]
	app_group_name = options["app_group_name"]
	return false if !analytics_logger || !options["analytics"]
	
	# If the Ruby interpreter supports GC statistics then turn it on
	# so that the info can be logged.
	GC.enable_stats if GC.respond_to?(:enable_stats)
	
	subscriber = self.new
	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)
			# This flag is thread-local.
			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