Skip to content

Commit

Permalink
Remove deprecated ActiveSupport::Deprecation delegation to instance
Browse files Browse the repository at this point in the history
  • Loading branch information
rafaelfranca committed Feb 20, 2024
1 parent 4dcf652 commit 640d066
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 242 deletions.
4 changes: 4 additions & 0 deletions activesupport/CHANGELOG.md
@@ -1,3 +1,7 @@
* Remove deprecated `ActiveSupport::Deprecation` delegation to instance.

*Rafael Mendonça França*

* Remove deprecated `SafeBuffer#clone_empty`.

*Rafael Mendonça França*
Expand Down
10 changes: 7 additions & 3 deletions activesupport/lib/active_support/deprecation.rb
Expand Up @@ -39,9 +39,6 @@ class Deprecation
# a circular require warning for active_support/deprecation.rb.
#
# So, we define the constant first, and load dependencies later.
require "active_support/deprecation/instance_delegator"
include InstanceDelegator

require "active_support/deprecation/behaviors"
require "active_support/deprecation/reporting"
require "active_support/deprecation/disallowed"
Expand All @@ -57,6 +54,13 @@ class Deprecation
include Disallowed
include MethodWrapper

MUTEX = Mutex.new # :nodoc:
private_constant :MUTEX

def self._instance # :nodoc:
@_instance ||= MUTEX.synchronize { @_instance ||= new }
end

# The version number in which the deprecated behavior will be removed, by default.
attr_accessor :deprecation_horizon

Expand Down
65 changes: 0 additions & 65 deletions activesupport/lib/active_support/deprecation/instance_delegator.rb

This file was deleted.

174 changes: 0 additions & 174 deletions activesupport/test/deprecation_test.rb
Expand Up @@ -778,180 +778,6 @@ def method
end
end

test "warn delegator is deprecated" do
_, deprecations = collect_deprecations(ActiveSupport.deprecator) do
ActiveSupport::Deprecation.warn "foo"
end
assert_equal 2, deprecations.size
assert_match("foo", deprecations.first)
assert_match("use your own Deprecation object instead", deprecations.last)
end

test "deprecate_methods delegator is deprecated" do
assert_deprecated("use your own Deprecation object instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.deprecate_methods(Deprecatee)
end
end

test "silence delegator is deprecated" do
assert_deprecated("use Rails.application.deprecators.silence instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.silence { }
end
end

test "silence delegator is deprecated and delegates to the application's deprecators when available" do
with_rails_application_deprecators do
assert_deprecated("use Rails.application.deprecators.silence instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.silence do
assert_not_deprecated(@deprecator) do
@deprecator.warn
end
end
end
end
end

test "allow delegator is deprecated" do
assert_deprecated("use Rails.application.deprecators[framework].allow", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.allow { }
end
end

test "behavior delegators are deprecated" do
old_behavior = ActiveSupport::Deprecation._instance.behavior
assert_deprecated("use Rails.application.deprecators[framework].behavior", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.behavior
end
assert_deprecated("use Rails.application.deprecators.behavior= instead", ActiveSupport.deprecator) do
# we have to keep the same behavior for assert_deprecated to work
ActiveSupport::Deprecation.behavior = ActiveSupport.deprecator.behavior
end
ensure
ActiveSupport::Deprecation._instance.behavior = old_behavior
end

test "behavior= delegator is deprecated and delegates to the application's deprecators when available" do
with_rails_application_deprecators do
called = false
assert_deprecated("use Rails.application.deprecators.behavior= instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.behavior = ->(*) { called = true }
@deprecator.warn
end
assert called
end
end

test "disallowed_behavior delegators are deprecated" do
old_behavior = ActiveSupport::Deprecation._instance.disallowed_behavior
assert_deprecated("use Rails.application.deprecators[framework].disallowed_behavior", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.disallowed_behavior
end
assert_deprecated("use Rails.application.deprecators.disallowed_behavior= instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.disallowed_behavior = ->(*) { }
end
ensure
ActiveSupport::Deprecation._instance.disallowed_behavior = old_behavior
end

test "disallowed_behavior= delegators is deprecated and delegates to the application's deprecators when available" do
with_rails_application_deprecators do
called = false
assert_deprecated("use Rails.application.deprecators.disallowed_behavior= instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.disallowed_behavior = ->(*) { called = true }
end
@deprecator.disallowed_warnings = :all
@deprecator.warn
assert called
end
end

test "debug delegators are deprecated" do
old_debug = ActiveSupport::Deprecation._instance.debug
assert_deprecated("use Rails.application.deprecators[framework].debug", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.debug
end
assert_deprecated("use Rails.application.deprecators.debug= instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.debug = true
end
ensure
ActiveSupport::Deprecation._instance.debug = old_debug
end

test "debug= delegator is deprecated and delegates to the application's deprecators when available" do
with_rails_application_deprecators do
assert_deprecated("use Rails.application.deprecators.debug= instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.debug = true
end
assert @deprecator.debug
end
end

test "silenced delegators are deprecated" do
old_silenced = ActiveSupport::Deprecation._instance.silenced
assert_deprecated("use Rails.application.deprecators[framework].silenced", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.silenced
end
assert_deprecated("use Rails.application.deprecators.silenced= instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.silenced = false
end
ensure
ActiveSupport::Deprecation._instance.silenced = old_silenced
end

test "silenced= delegator is deprecated and delegates to the application's deprecators when available" do
with_rails_application_deprecators do
assert_deprecated("use Rails.application.deprecators.silenced= instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.silenced = true
end
assert @deprecator.silenced
end
end

test "disallowed_warnings delegators are deprecated" do
old_disallowed_warnings = ActiveSupport::Deprecation._instance.disallowed_warnings
assert_deprecated("use Rails.application.deprecators[framework].disallowed_warnings", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.disallowed_warnings
end
assert_deprecated("use Rails.application.deprecators.disallowed_warnings= instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.disallowed_warnings = []
end
ensure
ActiveSupport::Deprecation._instance.disallowed_warnings = old_disallowed_warnings
end

test "disallowed_warnings= delegator is deprecated and delegates to the application's deprecators when available" do
with_rails_application_deprecators do
assert_deprecated("use Rails.application.deprecators.disallowed_warnings= instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.disallowed_warnings = :all
end
assert_equal :all, @deprecator.disallowed_warnings
end
end

test "gem_name delegators are deprecated" do
old_gem_name = ActiveSupport::Deprecation._instance.gem_name
assert_deprecated("use your own Deprecation object instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.gem_name
end
assert_deprecated("use your own Deprecation object instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.gem_name = "MyGem"
end
ensure
ActiveSupport::Deprecation._instance.gem_name = old_gem_name
end

test "deprecation_horizon delegators are deprecated" do
old_deprecation_horizon = ActiveSupport::Deprecation._instance.deprecation_horizon
assert_deprecated("use your own Deprecation object instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.deprecation_horizon
end
assert_deprecated("use your own Deprecation object instead", ActiveSupport.deprecator) do
ActiveSupport::Deprecation.deprecation_horizon = "2.0"
end
ensure
ActiveSupport::Deprecation._instance.deprecation_horizon = old_deprecation_horizon
end

test "warn deprecation skips the internal caller locations" do
@deprecator.behavior = ->(_, callstack, *) { @callstack = callstack }
method_that_emits_deprecation(@deprecator)
Expand Down
2 changes: 2 additions & 0 deletions guides/source/7_2_release_notes.md
Expand Up @@ -207,6 +207,8 @@ Please refer to the [Changelog][active-support] for detailed changes.

### Removals

* Remove deprecated `ActiveSupport::Deprecation` delegation to instance.

* Remove deprecated `SafeBuffer#clone_empty`.

* Remove deprecated `#to_default_s` from `Array`, `Date`, `DateTime` and `Time`.
Expand Down

0 comments on commit 640d066

Please sign in to comment.