Time.advance在哪里记录?

在Web上环顾四周,我发现Ruby Time类有Time#advance 。 这记录在哪里? 我在这里的Ruby API文档中没有提到它。

API文档的搜索function表明在任何地方都没有称为“advance”的方法。

尽管如此,在IRB ……

 >> t = Time.now => Thu Mar 05 16:08:57 -0800 2009 >> t.advance :months => 1 => Sun Apr 05 16:08:57 -0700 2009 

令我困惑的另一件事……在时间类的文档中,它首先说的是“实现time.rb库文档中描述的Time类的扩展。”

它们是否意味着“time.rb库实现了对这个类的扩展?”

我想也许这就是Time#advance来自的地方,但我发现的只是这个 。

它实际上在ActiveSupport::CoreExtensions::Numeric::Time模块中。

这是我对Ruby的抱怨之一 – 不可能为对象的每个方法找到全面的文档,因为方法列表会根据上下文而改变。 强大而刺激。

我正在研究一个我最初没写过的大型Rails应用程序,偶尔我会谷歌一个方法,我在几分钟之前就认识不到几分钟才实现…是的,之前的开发人员在/ lib中定义了它。

看起来不像advance是语言的核心部分,因此缺乏文档。 看起来是rails包含在ActiveSupport模块中的软件包的一部分。

文档在这里: http : //api.rubyonrails.org/classes/Time.html#method-i-advance

对于Time的许多其他扩展,这是ActiveSupport的一部分,它可能是作为Rails的一部分获得的,尽管该库本身就是完全可用的。

请参阅文档

这是第二个问题的答案。

在时间类的文档中,它首先说的是“实现time.rb库文档中描述的Time类的扩展。”

它们是否意味着“time.rb库实现了对这个类的扩展?”

Time类在很多地方打开:

  • 在Ruby中:
    • time.c
    • LIB / date.rb
    • LIB / RSS / rss.rb
    • LIB / time.rb
    • LIB / YAML / ruby​​types.rb
  • 在Rails中:
    • 的ActiveSupport / LIB /的ActiveSupport /芯-EXT /数字/ time.rb

APIdock区分Ruby和Rails,但是当它在一个项目中多次定义时,“组合”单个元素的RDoc。 如果单个元素有多个RDoc(在本例中类似于Time类),则只显示其中一个,而其他元素则不显示。 这可能令人困惑。

本文:

实现time.rb库文档中描述的Time类的扩展。

…来自lib / time.rb。 它来自标准库,并扩展了核心库的Time类(在time.c中定义)。 所以,你需要打电话……

 require 'time' 

…使用time.rb中定义的扩展名。 否则,您只能使用time.c中定义的方法。