JRuby x Proxy x Reflection

Estou brincando com o JRuby e tentando instanciar objetos Ruby dentro do Java, para chamar código Ruby de dentro do Java.

Problema básico: o JRuby retorna java.lang.reflect.Proxy para todos os objetos Ruby criados, daí fico impossibilitado de usar qualquer tipo de reflection.

O que eu queria era por reflection chamar um método (desconhecido / não especificado por uma interface) de um objeto Ruby. Parece que o JRuby me deixa na mão em relação a isso… :frowning:

O proxy do Java poderia colaborar também, mas acho que não tem jeito não, ou seja, se vc tem um Proxy, vc não tem como fazer reflection no objeto que está dentro do Proxy…

E se você fizesse a reflection do lado Ruby? Você poderia chamar object.methods para receber a array de métodos públicos do objeto. Isso não seria suficiente?

Vc diz criar um método em ruby do tipo:

def call_method(“methodName”, params)

Daí quando eu quisesse chamar qualquer método do Ruby de dentro do meu Java eu chamaria esse método?

Eu teria que ter esse método na interface do objeto, pelo mesmo problema, para poder chamá-lo… mas já seria um avanço…

Do java eu tenho que chamar object.methods para fazer a reflection… O problema é que o Proxy é fechadíssimo…

Achei! Tem que esperar mais um pouquinho pelo tal de Compile #2:

Cara,

eu não sei se essa dica pode te ajudar. Mas o Akita, evangelista do Ruby on Rails no Brasil, publicou há um tempo atrás um artigo que fala como usar ruby usando a script engine do java:

É isso.