2009-03-06 31 views
8

Nhìn xung quanh trên Web tôi thấy rằng lớp Ruby TimeTime#advance. Tài liệu này ở đâu? Tôi thấy không có đề cập đến nó trong tài liệu API Ruby here.Tài liệu Time.advance ở đâu?

Chức năng tìm kiếm tài liệu API chỉ ra rằng không có phương thức nào được gọi là "nâng cao" ở bất kỳ đâu.

Tuy nhiên, trong IRB ...

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

Một điều mà tôi bối rối ... Trong tài liệu cho lớp thời gian, điều đầu tiên mà họ gọi là "Thực hiện các phần mở rộng cho lớp Time được được mô tả trong tài liệu cho thư viện time.rb. "

Ý của chúng là "thư viện time.rb triển khai tiện ích mở rộng cho lớp này?"

Tôi nghĩ có lẽ đó là thời điểm tiến bộ của Time # nhưng tất cả những gì tôi tìm thấy là this.

Trả lời

5

Nó thực sự trong module ActiveSupport::CoreExtensions::Numeric::Time.

Đây là một trong những kềm chế của tôi với Ruby - không thể tìm thấy tài liệu toàn diện cho mọi phương thức mà đối tượng có, vì danh sách phương pháp thay đổi tùy theo ngữ cảnh. Mạnh mẽ, nhưng khó chịu.

Tôi đang làm việc trên một ứng dụng Rails lớn mà tôi không viết ban đầu, và thỉnh thoảng tôi google một phương pháp mà tôi không nhận ra trong vài phút trước khi thực hiện ... vâng, nhà phát triển trước đã xác định trong/lib.

+1

Để sử dụng ngoài đường ray: trong terminal: 'gem install activesupport', trong x.rb:' require 'active_support/time'' –

3

Điều này, với nhiều tiện ích mở rộng khác cho Thời gian, là một phần của ActiveSupport, mà bạn có thể có được trong Rails, mặc dù thư viện hoàn toàn có thể sử dụng được.

Xem documentation

3

Đây là câu trả lời cho câu hỏi thứ hai của bạn.

Trong tài liệu cho lớp thời gian, điều đầu tiên là "Triển khai tiện ích mở rộng cho lớp Thời gian được mô tả trong tài liệu cho thư viện time.rb".

Ý của chúng là "thư viện time.rb triển khai tiện ích mở rộng cho lớp này?"

Lớp Thời gian được mở ra ở nhiều nơi:

  • trong Ruby:
    • time.c
    • lib/date.rb
    • lib/rss/rss.rb
    • lib/time.rb
    • lib/yaml/rubytypes.rb
  • trong Rails:
    • activesupport/lib/activesupport/core-ext/số/time.rb

APIdock phân biệt giữa Ruby và Rails, nhưng "kết hợp" các RDocs của một phần tử đơn lẻ khi nó được xác định nhiều lần trong một dự án. Nếu có nhiều RDocs cho một phần tử đơn lẻ (như lớp Thời gian trong trường hợp này), chỉ một trong số chúng được hiển thị và các phần tử khác không được hiển thị. Điều này có thể gây nhầm lẫn.

văn bản này:

Thực hiện các phần mở rộng cho lớp Thời gian được mô tả trong tài liệu cho thư viện time.rb.

... đến từ lib/time.rb. Nó từ thư viện chuẩn và mở rộng lớp thời gian của thư viện cốt lõi (được định nghĩa trong time.c). Vì vậy, bạn cần phải gọi ...

require 'time' 

... để sử dụng các tiện ích được xác định theo thời gian.rb. Nếu không, bạn chỉ có thể sử dụng các phương thức được xác định trong time.c.

Các vấn đề liên quan