Где задокументирован сам модуль ruby ​​и поведение self.extended?

Я просматривал пост в блоге ruby mixin, и там говорится, что когда модуль включен в класс, self.included() метод называется.

Мой вопрос, где это поведение официально задокументировано? Я не могу найти его на сайте ruby-docs.org или кирке.

4 ответа

Хотя по какой-то причине его нет в Ruby Doc, included на самом деле задокументировано. Бег ri Module.included в терминале предусмотрено это:

included( othermod )

Обратный вызов вызывается всякий раз, когда получатель включен в другой модуль или класс. Это следует использовать в предпочтении Module.append_features если ваш код хочет выполнить какое-то действие, когда модуль включен в другой.

module A
  def A.included(mod)
    puts "#{self} included in #{mod}"
  end
end
module Enumerable
  include A
end

Эту документацию можно найти в источнике Ruby вobject.c, К сожалению, Module.extended не задокументировано

Я подозреваю, что его нет на веб-сайте RubyDoc, потому что это закрытый метод, а приватные методы в настоящее время не отображаются.

Люди знают об этой проблеме, но они еще не разобрались, как обращаться с приватными методами, даже если они не являются деталями реализации.

Я создал отчет об ошибке на http://bugs.ruby-lang.org/issues/6381

Оба документа описаны на странице 556 второго издания кирки (охватывающей Ruby 1.8). Документация там выглядит так же, как результат ri Module.included что Эндрю Маршалл опубликовал, так что я подозреваю, что раздел книги был создан автоматически. Если он был удален из более поздних выпусков кирки, то это может быть результатом той же ошибки, из-за которой он не появляется на http://www.ruby-doc.org/.

Кажется, только публичные методы документированы

Другие вопросы по тегам