1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Deprecate Module.local_constants

After Ruby 1.9, we can easily get the constants that have been
defined locally by `Module.constants(false)`.
This commit is contained in:
yui-knk 2016-02-28 11:00:14 +09:00
parent 0d37f122fc
commit 86d4e18958
5 changed files with 17 additions and 26 deletions

View file

@ -1,3 +1,7 @@
* Deprecate `Module.local_constants`. Please use `Module.constants(false)` instead.
*Yuichiro Kaneko*
## Rails 5.0.0.beta3 (February 24, 2016) ##
* Deprecate arguments on `assert_nothing_raised`.

View file

@ -57,6 +57,10 @@ class Module
end
def local_constants #:nodoc:
ActiveSupport::Deprecation.warn(<<-MSG.squish)
Module#local_constants is deprecated and will be removed in Rails 5.1.
Use Module#constants(false) instead.
MSG
constants(false)
end
end

View file

@ -143,7 +143,7 @@ module ActiveSupport #:nodoc:
next unless mod.is_a?(Module)
# Get a list of the constants that were added
new_constants = mod.local_constants - original_constants
new_constants = mod.constants(false) - original_constants
# @stack[namespace] returns an Array of the constants that are being evaluated
# for that namespace. For instance, if parent.rb requires child.rb, the first
@ -171,7 +171,7 @@ module ActiveSupport #:nodoc:
@watching << namespaces.map do |namespace|
module_name = Dependencies.to_constant_name(namespace)
original_constants = Dependencies.qualified_const_defined?(module_name) ?
Inflector.constantize(module_name).local_constants : []
Inflector.constantize(module_name).constants(false) : []
@stack[module_name] << original_constants
module_name

View file

@ -328,7 +328,13 @@ class ModuleTest < ActiveSupport::TestCase
end
def test_local_constants
assert_equal %w(Constant1 Constant3), Ab.local_constants.sort.map(&:to_s)
ActiveSupport::Deprecation.silence do
assert_equal %w(Constant1 Constant3), Ab.local_constants.sort.map(&:to_s)
end
end
def test_test_local_constants_is_deprecated
assert_deprecated { Ab.local_constants.sort.map(&:to_s) }
end
end

View file

@ -709,29 +709,6 @@ M.parents # => [X::Y, X, Object]
NOTE: Defined in `active_support/core_ext/module/introspection.rb`.
### Constants
The method `local_constants` returns the names of the constants that have been
defined in the receiver module:
```ruby
module X
X1 = 1
X2 = 2
module Y
Y1 = :y1
X1 = :overrides_X1_above
end
end
X.local_constants # => [:X1, :X2, :Y]
X::Y.local_constants # => [:Y1, :X1]
```
The names are returned as symbols.
NOTE: Defined in `active_support/core_ext/module/introspection.rb`.
#### Qualified Constant Names
The standard methods `const_defined?`, `const_get`, and `const_set` accept