Todo dia a gente “mata um leão”, e o de hoje foi o InvokeDynamic do Java 7.

Apesar de todas as promessas, a tecnologia que foi implementada no Java 7 ainda possui algumas incompatibilidades com o JRuby. As aplicações funcionam normalmente mas não suportam uma grande carga de atualizações (refresh). Quando publicada em ambientes com muitas requisições o WebServer encerra a aplicação com os seguinte erro:

NoMethodError (super: no superclass method request_parameters)

Para resolver o problema foi necessário desabilitar o recurso antes de executar o WebServer. Para ambientes de produção (Linux) pode ser configurado em /etc/environment para iniciar com o parâmetro já definido.

export JRUBY_OPTS="-Xcompile.invokedynamic=false"