2009-03-06 5 views
8

웹에서 나는 Ruby Time 클래스가 Time#advance 인 것을 발견했습니다. 이 문서는 어디에 문서화되어 있습니까? 나는 Ruby API 문서 here에서 그것의 언급을 보지 못했다.Time.advance는 어디에 기록되어 있습니까?

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.rb 라이브러리가이 클래스에 대한 확장 기능을 구현합니까?"

나는 Time # advance가 나온 곳이라고 생각했지만, 발견 된 것은 모두 this입니다.

답변

5

그것은 ActiveSupport::CoreExtensions::Numeric::Time 모듈에 실제로있다.

이것은 Ruby에 대한 나의 불만 중 하나입니다. 메소드 목록이 컨텍스트에 따라 달라지기 때문에 객체에있는 모든 메소드에 대한 포괄적 인 문서를 찾을 수 없습니다. 강력하면서도 자극적입니다.

필자는 원래 작성하지 않은 대규모 Rails 앱을 개발 중입니다. 예전에 개발자가 정의한대로 몇 분 동안 인식하지 못하는 방법을 Google에서 사용했습니다. in/lib.

+1

레일 외부에서 사용 : 터미널에서 : gem install activesupport' in x.rb :'require 'active_support/time'' –

3

다른 많은 확장 기능이있는이 기능은 ActiveSupport에 포함되어 있습니다. ActiveSupport는이 라이브러리를 철저하게 사용할 수 있지만 Rails의 일부로 구입했을 가능성이 큽니다.

advance처럼 보이지 않음 documentation

3

이것은 두 번째 질문에 대한 답변입니다.

시간 클래스의 문서에서 가장 먼저 말하는 것은 "time.rb 라이브러리의 설명서에 설명 된 Time 클래스의 확장을 구현합니다."입니다.

"time.rb 라이브러리가이 클래스에 대한 확장 기능을 구현합니까?" 루비

  • :
    • time.c
    • lib 디렉토리/date.rb
    • lib 디렉토리/RSS/rss.rb

타임 클래스는 여러 곳에서 열립니다

  • lib/시간.RB
  • lib 디렉토리/YAML/rubytypes.rb 레일에
  • :
    • activesupport/lib 디렉토리/activesupport/코어 내선/숫자/time.rb
  • APIdock은 Ruby와 Rails를 구별하지만 하나의 프로젝트에서 여러 번 정의 된 경우 단일 요소의 RDoc를 "결합"합니다. 단일 요소 (이 경우 Time 클래스와 같은)에 대해 여러 RDocs가있는 경우 그 중 하나만 표시되고 나머지는 표시되지 않습니다. 혼란 스러울 수 있습니다.

    이 텍스트 :

    는 time.rb 라이브러리의 문서에서 설명하는 시간 클래스에 확장을 구현합니다.

    ...는 lib/time.rb에서옵니다. 이것은 표준 라이브러리에서 왔으며 핵심 라이브러리의 Time 클래스 (time.c에 정의되어 있음)를 확장합니다. 그래서 전화 할 필요가 있습니다 ...

    require 'time' 
    

    ... time.rb에 정의 된 확장을 사용하십시오. 그렇지 않으면 time.c에 정의 된 메서드 만 사용할 수 있습니다.