ruby-on-rails - define_method - modules in ruby
En Ruby o Rails, ¿por qué "incluir" a veces dentro de la clase y, a veces fuera de la clase? (1)
pensé
class ApplicationController < ActionController::Base
include Foo
es agregar un "mixin" - para que todos los métodos en el módulo Foo sean tratados como métodos del ApplicationController.
Pero ahora veo código que es
include Bar
class ApplicationController < ActionController::Base
include Foo
Entonces, ¿por qué está fuera de ApplicationController ? ¿En qué se diferencia esto del uso más común de ponerlo dentro de ApplicationController ?
Sí, include Foo dentro de una clase agrega Foo a los antepasados de esa clase y, por lo tanto, pone todos los métodos de instancia de Foo a disposición de las instancias de esa clase.
Fuera de cualquier definición de clase, include Foo agregará Foo a los antepasados de Object . Es decir, es lo mismo que include Foo dentro de la definición de la clase Object . El uso de esto es que todos los métodos de instancia de Foo están ahora disponibles en todas partes.