From f5c2bf10979a3e0d5f33665660c06423b967e4ec Mon Sep 17 00:00:00 2001
From: Ethan <ethan@unth>
Date: Mon, 12 Jan 2015 15:11:23 -0800
Subject: pretty_print will use #inspect if a subclass redefines it

---
 activerecord/lib/active_record/core.rb | 32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

(limited to 'activerecord/lib')

diff --git a/activerecord/lib/active_record/core.rb b/activerecord/lib/active_record/core.rb
index a7aff9f724..a5eb18246f 100644
--- a/activerecord/lib/active_record/core.rb
+++ b/activerecord/lib/active_record/core.rb
@@ -456,22 +456,26 @@ module ActiveRecord
     # Takes a PP and prettily prints this record to it, allowing you to get a nice result from `pp record`
     # when pp is required.
     def pretty_print(pp)
-      pp.object_address_group(self) do
-        if defined?(@attributes) && @attributes
-          column_names = self.class.column_names.select { |name| has_attribute?(name) || new_record? }
-          pp.seplist(column_names, proc { pp.text ',' }) do |column_name|
-            column_value = read_attribute(column_name)
-            pp.breakable ' '
-            pp.group(1) do
-              pp.text column_name
-              pp.text ':'
-              pp.breakable
-              pp.pp column_value
+      if self.class.instance_method(:inspect).owner != ActiveRecord::Base.instance_method(:inspect).owner
+        pp.text inspect
+      else
+        pp.object_address_group(self) do
+          if defined?(@attributes) && @attributes
+            column_names = self.class.column_names.select { |name| has_attribute?(name) || new_record? }
+            pp.seplist(column_names, proc { pp.text ',' }) do |column_name|
+              column_value = read_attribute(column_name)
+              pp.breakable ' '
+              pp.group(1) do
+                pp.text column_name
+                pp.text ':'
+                pp.breakable
+                pp.pp column_value
+              end
             end
+          else
+            pp.breakable ' '
+            pp.text 'not initialized'
           end
-        else
-          pp.breakable ' '
-          pp.text 'not initialized'
         end
       end
     end
-- 
cgit v1.2.3