diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2011-05-01 19:10:21 -0600 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2011-05-01 19:10:21 -0600 |
commit | 31155eeb3ce00e5f830171d34b2037fb7a1104f0 (patch) | |
tree | 01e6f703593a16219e5a71c3cf5f95538435a1af /activerecord/lib | |
parent | 635abc7194a0847fee1592eff9fa2fe84bafc5bf (diff) | |
download | rails-31155eeb3ce00e5f830171d34b2037fb7a1104f0.tar.gz rails-31155eeb3ce00e5f830171d34b2037fb7a1104f0.tar.bz2 rails-31155eeb3ce00e5f830171d34b2037fb7a1104f0.zip |
Make the identity map use the instrumentation infrastructure so we can style the messages nicely with colors (FIXME: Can someone look into why the test is not working?)
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/identity_map.rb | 15 | ||||
-rw-r--r-- | activerecord/lib/active_record/log_subscriber.rb | 9 |
2 files changed, 18 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/identity_map.rb b/activerecord/lib/active_record/identity_map.rb index 95a8e5cff7..4ad0b0d205 100644 --- a/activerecord/lib/active_record/identity_map.rb +++ b/activerecord/lib/active_record/identity_map.rb @@ -49,12 +49,15 @@ module ActiveRecord end def get(klass, primary_key) - obj = repository[klass.symbolized_base_class][primary_key] - if obj.is_a?(klass) - if ActiveRecord::Base.logger - ActiveRecord::Base.logger.debug "#{klass} with ID = #{primary_key} loaded from Identity Map" - end - obj + record = repository[klass.symbolized_base_class][primary_key] + + if record.is_a?(klass) + ActiveSupport::Notifications.instrument("identity.active_record", + :line => "From Identity Map (id: #{primary_key})", + :name => "#{klass} Loaded", + :connection_id => object_id) + + record else nil end diff --git a/activerecord/lib/active_record/log_subscriber.rb b/activerecord/lib/active_record/log_subscriber.rb index d31e321440..3a015ee8c2 100644 --- a/activerecord/lib/active_record/log_subscriber.rb +++ b/activerecord/lib/active_record/log_subscriber.rb @@ -46,6 +46,15 @@ module ActiveRecord debug " #{name} #{sql}#{binds}" end + def identity(event) + return unless logger.debug? + + name = color(event.payload[:name], odd? ? CYAN : MAGENTA, true) + line = odd? ? color(event.payload[:line], nil, true) : event.payload[:line] + + debug " #{name} #{line}" + end + def odd? @odd_or_even = !@odd_or_even end |