diff --git a/activesupport/lib/active_support/deprecation.rb b/activesupport/lib/active_support/deprecation.rb index 76db7b5a56..3c1ceafcff 100644 --- a/activesupport/lib/active_support/deprecation.rb +++ b/activesupport/lib/active_support/deprecation.rb @@ -143,7 +143,8 @@ module ActiveSupport end end - # Stand-in for @request, @attributes, etc. + # Stand-in for @request, @attributes, @params, etc which emits deprecation + # warnings on any method call (except #inspect). class DeprecatedInstanceVariableProxy instance_methods.each { |m| undef_method m unless m =~ /^__/ } @@ -151,6 +152,12 @@ module ActiveSupport @instance, @method, @var = instance, method, var end + # Don't give a deprecation warning on inspect since test/unit and error + # logs rely on it for diagnostics. + def inspect + target.inspect + end + private def method_missing(called, *args, &block) warn caller, called, args diff --git a/activesupport/test/deprecation_test.rb b/activesupport/test/deprecation_test.rb index 5699ef78d6..9eb9e9253a 100644 --- a/activesupport/test/deprecation_test.rb +++ b/activesupport/test/deprecation_test.rb @@ -79,6 +79,10 @@ class DeprecationTest < Test::Unit::TestCase assert_deprecated('@request.to_s') { assert_equal @dtc.request.to_s, @dtc.old_request.to_s } end + def test_deprecated_instance_variable_proxy_shouldnt_warn_on_inspect + assert_not_deprecated { assert_equal @dtc.request.inspect, @dtc.old_request.inspect } + end + def test_assert_deprecation_without_match assert_deprecated do @dtc.partially