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