提交 04df7bb0 编写于 作者: X Xavier Noria

deprecates Module#local_constant_names

上级 3c645488
## Rails 4.0.0 (unreleased) ## ## Rails 4.0.0 (unreleased) ##
* Deprecates the compatibility method Module#local_constant_names,
use Module#local_constants instead (which returns symbols). *fxn*
* Deletes the compatibility method Module#method_names, * Deletes the compatibility method Module#method_names,
use Module#methods from now on (which returns symbols). *fxn* use Module#methods from now on (which returns symbols). *fxn*
......
...@@ -61,9 +61,19 @@ def local_constants #:nodoc: ...@@ -61,9 +61,19 @@ def local_constants #:nodoc:
constants(false) constants(false)
end end
# Returns the names of the constants defined locally rather than the # *DEPRECATED*: Use +local_constants+ instead.
# constants themselves. See <tt>local_constants</tt>. #
# Returns the names of the constants defined locally as strings.
#
# module M
# X = 1
# end
# M.local_constant_names # => ["X"]
#
# This method is useful for forward compatibility, since Ruby 1.8 returns
# constant names as strings, whereas 1.9 returns them as symbols.
def local_constant_names def local_constant_names
ActiveSupport::Deprecation.warn('Module#local_constant_names is deprecated, use Module#local_constants instead', caller)
local_constants.map { |c| c.to_s } local_constants.map { |c| c.to_s }
end end
end end
...@@ -105,7 +105,7 @@ def new_constants ...@@ -105,7 +105,7 @@ def new_constants
next unless mod.is_a?(Module) next unless mod.is_a?(Module)
# Get a list of the constants that were added # Get a list of the constants that were added
new_constants = mod.local_constant_names - original_constants new_constants = mod.local_constants - original_constants
# self[namespace] returns an Array of the constants that are being evaluated # self[namespace] returns an Array of the constants that are being evaluated
# for that namespace. For instance, if parent.rb requires child.rb, the first # for that namespace. For instance, if parent.rb requires child.rb, the first
...@@ -133,7 +133,7 @@ def watch_namespaces(namespaces) ...@@ -133,7 +133,7 @@ def watch_namespaces(namespaces)
namespaces.map do |namespace| namespaces.map do |namespace|
module_name = Dependencies.to_constant_name(namespace) module_name = Dependencies.to_constant_name(namespace)
original_constants = Dependencies.qualified_const_defined?(module_name) ? original_constants = Dependencies.qualified_const_defined?(module_name) ?
Inflector.constantize(module_name).local_constant_names : [] Inflector.constantize(module_name).local_constants : []
watching << module_name watching << module_name
@stack[module_name] << original_constants @stack[module_name] << original_constants
......
...@@ -212,6 +212,12 @@ def test_parents ...@@ -212,6 +212,12 @@ def test_parents
def test_local_constants def test_local_constants
assert_equal %w(Constant1 Constant3), Ab.local_constants.sort.map(&:to_s) assert_equal %w(Constant1 Constant3), Ab.local_constants.sort.map(&:to_s)
end end
def test_local_constant_names
ActiveSupport::Deprecation.silence do
assert_equal %w(Constant1 Constant3), Ab.local_constant_names
end
end
end end
module BarMethodAliaser module BarMethodAliaser
......
...@@ -692,7 +692,8 @@ NOTE: Defined in +active_support/core_ext/module/introspection.rb+. ...@@ -692,7 +692,8 @@ NOTE: Defined in +active_support/core_ext/module/introspection.rb+.
h4. Constants h4. Constants
The method +local_constants+ returns the names of the constants that have been defined in the receiver module: The method +local_constants+ returns the names of the constants that have been
defined in the receiver module:
<ruby> <ruby>
module X module X
...@@ -708,7 +709,8 @@ X.local_constants # => [:X1, :X2, :Y] ...@@ -708,7 +709,8 @@ X.local_constants # => [:X1, :X2, :Y]
X::Y.local_constants # => [:Y1, :X1] X::Y.local_constants # => [:Y1, :X1]
</ruby> </ruby>
The names are returned as symbols. The method +local_constant_names+ always returns strings. The names are returned as symbols. (The method +local_constant_names+ returns
strings, but +local_constant_names+ is deprecated.)
NOTE: Defined in +active_support/core_ext/module/introspection.rb+. NOTE: Defined in +active_support/core_ext/module/introspection.rb+.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册