Pregunta ¿Dónde se documenta el comportamiento del módulo ruby ​​auto-incluido y autoexplotado?


Estaba mirando el rubí mixin publicación de blog, y dice que cuando se incluye un módulo en una clase es self.included() método se llama.

Mi pregunta es, ¿dónde está oficialmente documentado este comportamiento? Parece que no puedo ubicarlo en el sitio web ruby-docs.org ni en el pico.


11
2018-04-29 05:13


origen


Respuestas:


Si bien no está en Ruby Doc por alguna razón, included en realidad está documentado. Corriendo ri Module.included en el terminal proporciona esto:

included( othermod )

Llamada invocada siempre que el receptor esté incluido en otro módulo   o clase Esto debe usarse con preferencia a Module.append_features   si su código quiere realizar alguna acción cuando se incluye un módulo en   otro.

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

Esta documentación se puede encontrar en Fuente de Ruby en object.c. Tristemente, Module.extended no está documentado


10
2018-04-29 06:19



Sospecho que no está en el sitio web de RubyDoc porque es un método privado, y los métodos privados no se muestran actualmente.

Las personas son conscientes de este problema, pero aún no han resuelto cómo manejar métodos que son privados aunque no sean detalles de implementación.

Creé un informe de error en http://bugs.ruby-lang.org/issues/6381


1
2018-04-29 22:26



parece que solo los métodos públicos están documentados


0
2018-04-29 22:31



Ambos están documentados en la página 556 de la segunda edición de pico (que cubre Ruby 1.8). La documentación allí parece el resultado de ri Module.included que Andrew Marshall publicó, entonces sospecho que esa sección del libro se generó automáticamente. Si se ha eliminado de ediciones posteriores de pico, podría ser el resultado del mismo error que impide que se muestre en ruby-doc.org.


0
2018-04-29 22:39