¿Parens opcionales en Ruby para el método con mayúscula?
Acabo de comenzar a usar IronRuby (pero el comportamiento parece consistente cuando lo probé en Ruby simple) para un DSL en mi aplicación .NET, y como parte de esto estoy definiendo métodos a los que llamar desde el DSL a través de define_method.
Sin embargo, me he encontrado con un problema relacionado con los parens opcionales al llamar a métodos que comienzan con una letra mayúscula.
Dado el siguiente programa:
class DemoClass
define_method :test do puts "output from test" end
define_method :Test do puts "output from Test" end
def run
puts "Calling 'test'"
test()
puts "Calling 'test'"
test
puts "Calling 'Test()'"
Test()
puts "Calling 'Test'"
Test
end
end
demo = DemoClass.new
demo.run
Ejecutar este código en una consola (usando ruby simple) produce el siguiente resultado:
ruby .\test.rb
Calling 'test'
output from test
Calling 'test'
output from test
Calling 'Test()'
output from Test
Calling 'Test'
./test.rb:13:in `run': uninitialized constant DemoClass::Test (NameError)
from ./test.rb:19:in `<main>'
Me doy cuenta de que la convención de Ruby es que las constantes comienzan con una letra mayúscula y que la convención de nomenclatura general para los métodos en Ruby es minúscula. Pero los padres realmente están matando mi sintaxis DSL en este momento.
¿Hay alguna forma de evitar este problema?