times rails modulos metodo mapas hoy fecha constantes constante ruby

rails - modulo ruby



Llamando a un método en un módulo de Ruby (3)

Método simple:

module MyModule def self.my_method(*args) MyModule::MyClass.my_method(*args) end end

Método más difícil:

Utilice la metaprogramación para escribir una función para todos los casos (como attr_accessor).

Tengo el siguiente código de Ruby:

module MyModule class MyClass def self.my_method end end end

Para llamar a my_method , entro MyModule::MyClass.my_method . Me gustaría escribir un envoltorio para mi my_method en el módulo:

MyModule.my_method

es posible?


No estoy seguro de lo que intentas lograr, pero: si lo conviertes en un método regular y lo modificas con module_function, podrás llamarlo de la forma que desees.

#!/usr/bin/ruby1.8 module MyModule def my_method p "my method" end module_function :my_method end

Una vez hecho esto, puede incluir el módulo y llamar al método como método de instancia:

class MyClass include MyModule def foo my_method end end MyClass.new.foo # => "my method"

o puede llamar al método como método de clase en el módulo:

MyModule.my_method # => "my method"


Puede definir el método directamente dentro del módulo.

module MyModule def self.my_method puts "Hi I am #{self}" end end MyModule.my_method #=> Hi I am MyModule