Где задокументировано Time.advance? - PullRequest
9 голосов
/ 06 марта 2009

Оглядываясь в Интернете, я обнаружил, что класс Ruby Time имеет Time#advance. Где это задокументировано? Я не видел упоминаний об этом в документации по Ruby API здесь .

Функция поиска для документов 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, которые описаны в документации для библиотеки time.rb».

Они означают, что «библиотека time.rb реализует расширения для этого класса?»

Я подумал, может быть, именно отсюда пришло время #, но все, что я нашел, было это .

Ответы [ 4 ]

6 голосов
/ 06 марта 2009

Не похоже, что advance является основной частью языка, отсюда и отсутствие документации. Выглядит как часть пакета, который входит в состав rails, модуля ActiveSupport.

Документация здесь: http://api.rubyonrails.org/classes/Time.html#method-i-advance

6 голосов
/ 06 марта 2009

На самом деле это модуль ActiveSupport::CoreExtensions::Numeric::Time.

Это одна из моих проблем с Ruby - невозможно найти исчерпывающую документацию для каждого метода, который есть у объекта, потому что список методов меняется в зависимости от контекста. Мощный, но раздражающий.

Я работаю над большим приложением на Rails, которое изначально не писал, и время от времени я пытаюсь найти метод, который я не распознаю в течение нескольких минут, прежде чем понять ... да, предыдущий разработчик определил его в / Lib.

3 голосов
/ 06 марта 2009

Это ответ на ваш второй вопрос.

В документации по классу времени первое, что он говорит: «Реализует расширения класса Time, которые описаны в документации для библиотеки time.rb.»

Они означают, что "библиотека time.rb реализует расширения для этого класса?"

Класс Time открыт во многих местах:

  • в рубине:
    • time.c
    • Библиотека / date.rb
    • Библиотека / Новости / rss.rb
    • Библиотека / time.rb
    • Библиотека / YAML / rubytypes.rb
  • в Rails:
    • ActiveSupport / Библиотека / ActiveSupport / ядро-вн / цифровая / time.rb

APIdock различает Ruby и Rails, но «объединяет» RDoc одного элемента, когда он определен несколько раз в одном проекте. Если существует несколько RDoc для одного элемента (например, класса Time в данном случае), отображается только один из них, а остальные нет. Это может сбивать с толку.

Этот текст:

Реализует расширения класса Time, которые описаны в документации к библиотеке time.rb.

... исходит из lib / time.rb. Он из стандартной библиотеки и расширяет класс Time базовой библиотеки (который определен в time.c). Итак, вам нужно позвонить ...

require 'time'

... использовать расширения, определенные в time.rb. В противном случае вы можете использовать только методы, определенные в time.c.

3 голосов
/ 06 марта 2009

Это, со многими другими расширениями Time, является частью ActiveSupport, которую вы, вероятно, приобрели как часть Rails, хотя библиотека сама по себе полностью пригодна для использования.

См. Документацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...