Parens opcionais em Ruby para o método com letra inicial maiúscula?
Comecei usando o IronRuby (mas o comportamento parece consistente quando o testei em Ruby comum) para uma DSL no meu aplicativo .NET - e como parte disso, estou definindo métodos a serem chamados a partir da DSL via define_method.
No entanto, deparei-me com um problema relacionado a parênteses opcionais ao chamar métodos que começam com uma letra maiúscula.
Dado o seguinte 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
A execução desse código em um console (usando ruby comum) produz a seguinte saída:
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>'
Percebo que a convenção Ruby é que as constantes começam com uma letra maiúscula e que a convenção geral de nomenclatura para métodos no Ruby é minúscula. Mas os parênteses estão realmente matando minha sintaxe DSL no momento.
Existe alguma maneira de contornar esse problema?