diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-07-25 11:11:23 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-07-25 11:11:23 -0700 |
commit | b7e0408ca922cf51228818edbfdcd5c63e3cb84e (patch) | |
tree | 0313ba10f8f42720b03b51fabc992d84c425d8cb /activerecord/lib | |
parent | d02f2d2fb213584ce52a231063c948def856f657 (diff) | |
download | rails-b7e0408ca922cf51228818edbfdcd5c63e3cb84e.tar.gz rails-b7e0408ca922cf51228818edbfdcd5c63e3cb84e.tar.bz2 rails-b7e0408ca922cf51228818edbfdcd5c63e3cb84e.zip |
use a hash to collect optional statistics about the instrumentation
Diffstat (limited to 'activerecord/lib')
3 files changed, 19 insertions, 19 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index c07ba2ac74..4799b693c5 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -36,9 +36,12 @@ module ActiveRecord define_callbacks :checkout, :checkin + @@row_even = true + def initialize(connection, logger = nil) #:nodoc: @active = nil @connection, @logger = connection, logger + @runtime = 0 @query_cache_enabled = false @query_cache = {} end @@ -89,6 +92,11 @@ module ActiveRecord false end + def reset_runtime #:nodoc: + rt, @runtime = @runtime, 0 + rt + end + # QUOTING ================================================== # Override to return the quoted table name. Defaults to column quoting. @@ -191,10 +199,16 @@ module ActiveRecord def log(sql, name) name ||= "SQL" - ActiveSupport::Notifications.instrument("sql.active_record", - :sql => sql, :name => name, :connection_id => object_id) do + instrumenter = ActiveSupport::Notifications.instrumenter + info = {} + + result = instrumenter.instrument("sql.active_record", + {:sql => sql, :name => name, :connection_id => object_id}, info) do yield end + @runtime += info[:elapsed] + + result rescue Exception => e message = "#{e.class.name}: #{e.message}: #{sql}" @logger.debug message if @logger diff --git a/activerecord/lib/active_record/log_subscriber.rb b/activerecord/lib/active_record/log_subscriber.rb index c7ae12977a..278e192e59 100644 --- a/activerecord/lib/active_record/log_subscriber.rb +++ b/activerecord/lib/active_record/log_subscriber.rb @@ -1,25 +1,11 @@ module ActiveRecord class LogSubscriber < ActiveSupport::LogSubscriber - def self.runtime=(value) - Thread.current["active_record_sql_runtime"] = value - end - - def self.runtime - Thread.current["active_record_sql_runtime"] ||= 0 - end - - def self.reset_runtime - rt, self.runtime = runtime, 0 - rt - end - def initialize super @odd_or_even = false end def sql(event) - self.class.runtime += event.duration return unless logger.debug? name = '%s (%.1fms)' % [event.payload[:name], event.duration] @@ -45,4 +31,4 @@ module ActiveRecord end end -ActiveRecord::LogSubscriber.attach_to :active_record
\ No newline at end of file +ActiveRecord::LogSubscriber.attach_to :active_record diff --git a/activerecord/lib/active_record/railties/controller_runtime.rb b/activerecord/lib/active_record/railties/controller_runtime.rb index bc6ca936c0..aed1c59b00 100644 --- a/activerecord/lib/active_record/railties/controller_runtime.rb +++ b/activerecord/lib/active_record/railties/controller_runtime.rb @@ -11,9 +11,9 @@ module ActiveRecord def cleanup_view_runtime if ActiveRecord::Base.connected? - db_rt_before_render = ActiveRecord::LogSubscriber.reset_runtime + db_rt_before_render = ActiveRecord::Base.connection.reset_runtime runtime = super - db_rt_after_render = ActiveRecord::LogSubscriber.reset_runtime + db_rt_after_render = ActiveRecord::Base.connection.reset_runtime self.db_runtime = db_rt_before_render + db_rt_after_render runtime - db_rt_after_render else |