2009-03-06 7 views
8

ウェブ上で見ると、Ruby TimeクラスはTime#advanceであることがわかりました。これはどこに文書化されていますか?私はRuby APIドキュメントhereでそれについて言及しませんでした。Time.advanceはどこに文書化されていますか?

APIドキュメントの検索機能では、「アドバンス」というメソッドはどこにも存在しないことが示されました。

それにもかかわらず、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.rbライブラリはこのクラスの拡張機能を実装していますか?

私はタイム・アドバンスがどこから来たのかと思ったが、見つけたのはthisだったのだろう。

答えて

5

それはActiveSupport::CoreExtensions::Numeric::Timeモジュールで実際にあります。

これは私のRubyの不具合の1つです。コンテキストによってはメソッドのリストが変わるため、オブジェクトにあるすべてのメソッドの包括的なドキュメントを見つけることは不可能です。強力で、しかも刺激的です。

私は元々は書いていなかった大規模なRailsアプリケーションに取り組んでいますが、私は数分間前から認識していなかった方法をGoogleに取り入れています...前の開発者はそれを定義しましたin/lib。

+1

レール外で使用する場合:端末で: 'gem install activesupport'、x.rb内:' require 'active_support/time'' –

3

これは、Timeの他の多くの拡張機能とともに、ActiveSupportに含まれています.AutodeskSupportは、おそらくRailsの一部として取得したものですが、ライブラリ自体は完全に使用可能です。

advanceようには見えません documentation

6

は、言語のコア部分、ドキュメントの故にその欠如である参照してください。 ActiveSupportモジュールであるレールに含まれているパッケージの一部に見えます。

ドキュメントはこちらです: http://api.rubyonrails.org/classes/Time.html#method-i-advance

+0

これが助けになりました!ありがとうございました! – lotif

3

これはあなたの2番目の質問に対する回答です。

タイムクラスのドキュメントでは、「time.rbライブラリのドキュメントに記載されているTimeクラスの拡張機能を実装しています」と書かれています。

「time.rbライブラリはこのクラスの拡張機能を実装していますか? Rubyで

    • time.c
    • のlib/date.rb
    • のlib/RSS/rss.rb

時のクラスは、多くの場所で開かれています

  • lib /時間。RBのRailsで
  • のlib/YAML/ruby​​types.rb
    • activesupportの/ libに/ activesupportの/コア-EXT /数字/ time.rb
  • APIdockはRubyとRailsを区別しますが、1つのプロジェクトのRDocsが1つのプロジェクトで複数回定義されている場合、そのRDocsを「結合」します。単一の要素(この場合はTimeクラスなど)に複数のRDocsがある場合、それらのうちの1つだけが表示され、他は表示されません。これは混乱する可能性があります。

    このテキスト:

    はtime.rbライブラリのマニュアルに記載されている時間のクラスへの拡張を実装します。

    ...はlib/time.rbから来ます。これは標準ライブラリのもので、コアライブラリのTimeクラス(time.cで定義されています)を拡張しています。したがって、電話する必要があります。

    require 'time' 
    

    ... time.rbで定義されている拡張機能を使用します。それ以外の場合は、time.cで定義されたメソッドしか使用できません。

    関連する問題