Time.advance在哪里记录?

时间:2009-03-06 00:20:28

标签: ruby api time

在Web上查看我发现Ruby Time类有Time#advance。这记录在哪里?我没有在Ruby API文档here中看到它。

API文档的搜索功能表明在任何地方都没有名为“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来自的地方,但我找到的只是this

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:6)

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

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

我正在开发一个我最初没写过的大型Rails应用程序,偶尔我会谷歌一个方法,我几分钟后才认识到这一点,然后才意识到......是的,之前的开发人员定义了它/ lib目录下。

答案 2 :(得分:3)

这有很多其他时间扩展,是ActiveSupport的一部分,你可能是Rails的一部分,虽然这个库本身就是完全可用的。

请参阅documentation

答案 3 :(得分:3)

这是第二个问题的答案。

  

在时间类的文档中,它首先说的是“实现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中定义的方法。