提交 56f3bbc5 编写于 作者: R Rafael Mendonça França

Merge pull request #23936 from yui-knk/local_constants_to_be_public

Deprecate `Module.local_constants`
* Deprecate `Module.local_constants`. Please use `Module.constants(false)` instead.
*Yuichiro Kaneko*
* Publish ActiveSupport::Executor and ActiveSupport::Reloader APIs to allow
components and libraries to manage, and participate in, the execution of
application code, and the application reloading process.
......
......@@ -57,6 +57,10 @@ def parents
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
......@@ -143,7 +143,7 @@ def new_constants
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 @@ def watch_namespaces(namespaces)
@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
......
......@@ -328,7 +328,13 @@ def test_parents
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
......
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册