From 7a09fc55c0d89f6a672c79fdd9787c51a85a06fc Mon Sep 17 00:00:00 2001 From: Sean Griffin Date: Sat, 10 Jan 2015 12:24:10 -0700 Subject: Stop special casing null binary data in logging There's very little value in logging "" instead of just "nil". I'd like to remove the column from the equation entirely, and this case is preventing us from doing so. --- activerecord/CHANGELOG.md | 5 +++++ activerecord/lib/active_record/log_subscriber.rb | 4 ++-- activerecord/test/cases/log_subscriber_test.rb | 7 ------- 3 files changed, 7 insertions(+), 9 deletions(-) (limited to 'activerecord') diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index c5f0e5022a..8875b7ae25 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,3 +1,8 @@ +* `nil` as a value for a binary column in a query no longer logs as + "", and instead logs as just "nil". + + *Sean Griffin* + * `attribute_will_change!` will no longer cause non-persistable attributes to be sent to the database. diff --git a/activerecord/lib/active_record/log_subscriber.rb b/activerecord/lib/active_record/log_subscriber.rb index eb64d197f0..a5c7279db9 100644 --- a/activerecord/lib/active_record/log_subscriber.rb +++ b/activerecord/lib/active_record/log_subscriber.rb @@ -22,10 +22,10 @@ module ActiveRecord def render_bind(column, value) if column - if column.binary? + if column.binary? && value # This specifically deals with the PG adapter that casts bytea columns into a Hash. value = value[:value] if value.is_a?(Hash) - value = value ? "<#{value.bytesize} bytes of binary data>" : "" + value = "<#{value.bytesize} bytes of binary data>" end [column.name, value] diff --git a/activerecord/test/cases/log_subscriber_test.rb b/activerecord/test/cases/log_subscriber_test.rb index a578e81844..97c0350911 100644 --- a/activerecord/test/cases/log_subscriber_test.rb +++ b/activerecord/test/cases/log_subscriber_test.rb @@ -125,12 +125,5 @@ class LogSubscriberTest < ActiveRecord::TestCase wait assert_match(/<16 bytes of binary data>/, @logger.logged(:debug).join) end - - def test_nil_binary_data_is_logged - binary = Binary.create(data: "") - binary.update_attributes(data: nil) - wait - assert_match(//, @logger.logged(:debug).join) - end end end -- cgit v1.2.3