Module PhusionPassenger::ClassicRailsExtensions::AnalyticsLogging |
In: | lib/phusion_passenger/classic_rails_extensions/init.rb

Methods

- install!
- new_transaction_log

Included Modules

- ACBaseExtension
- ACBenchmarkingExtension
- ACRescueExtension
- AVBenchmarkHelperExtension
- ARAbstractAdapterExtension
- CacheStoreExtension

Public Class methods
install!(options)

[ show source ]

         # File lib/phusion_passenger/classic_rails_extensions/init.rb, line 45
     45:         def self.install!(options)
     46:                 @@analytics_logger = options["analytics_logger"]
     47:                 # If the Ruby interpreter supports GC statistics then turn it on
     48:                 # so that the info can be logged.
     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:                                         # Rails 2.1
     95:                                         alias_method :fetch, :fetch_2_1
     96:                                 when 2
     97:                                         # Rails 2.2
     98:                                         alias_method :fetch, :fetch_2_2
     99:                                 when 3
    100:                                         # Rails 2.3
    101:                                         alias_method :fetch, :fetch_2_3
    102:                                 end
    103:                         end
    104:                         Rails.cache.extend(ConcreteCacheStoreExtension)
    105:                 end
    106:         end

new_transaction_log(env, category = :requests) {|log| ...}

[ show source ]

         # File lib/phusion_passenger/classic_rails_extensions/init.rb, line 108
    108:         def self.new_transaction_log(env, category = :requests)
    109:                 if env[PASSENGER_TXN_ID]
    110:                         group_name = env[PASSENGER_GROUP_NAME]
    111:                         union_station_key = env[PASSENGER_UNION_STATION_KEY]
    112:                         log = @@analytics_logger.new_transaction(group_name, category,
    113:                                 union_station_key)
    114:                         begin
    115:                                 yield log
    116:                         ensure
    117:                                 log.close
    118:                         end
    119:                 end
    120:         end