为什么ActiveSupport核心扩展没有作为模块添加



我正在阅读ActiveSupport core_ext源代码,发现它直接打开并扩展了核心ruby类,例如:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/string/conversions.rb。这不是让我们更难知道某个方法是来自activesupport还是实际上由ruby自己提供的吗(例如通过Method#owner(?

为什么它不使用诸如预处理/包含模块之类的东西来提供其附加功能?例如:

module StringConversionExtension
def to_time
# some implementation
end
end
String.prepend(StringExtension)

是否有任何历史/性能原因导致实现现在这样?

为什么它不使用诸如预处理/包含模块之类的东西来提供其附加的功能?例如:

可能是其中之一:

  • 最小化Rails中的代码量(因为您提出的方法有点冗长(,或者
  • 尽量减少现有的方法/常量/模块以及核心类中的方法/常数/模块的数量,因为在您提出的方法中,核心String类将具有新方法,并且现在将包括StringExtensions模块

最新更新