Удаленная отладка JRuby в приложении maven - PullRequest
0 голосов
/ 20 июня 2019

Локально, я запускаю приложение maven в Jetty (для начала мы развернем его как войну на tomcat), которое использует Java ScriptEngine для запуска скриптов Ruby, поступающих из FileSystem (это внешние логические файлы, закодированные неJava разработчики).Я хотел бы иметь возможность слушать исполнение JRuby, устанавливая точки останова или что-то подобное.

Я могу изменить способ вызова ruby, но не столько «упаковку», сколько мы публикуем Maven (&Spring) в качестве программного обеспечения, а файлы JRuby - это просто выделенная конфигурация для наших клиентов (следовательно, не нужно перекомпилировать весь проект только для conf).

//Java Class running the script

@Service
public class ScriptExecutor
{
    private ScriptEngine engine;

    public ScriptExecutor() throws NassurCoreException
    {
        System.setProperty("org.jruby.embed.localcontext.scope", "threadsafe");
        engine = new ScriptEngineManager().getEngineByName("jruby");
        engine.getContext().setWriter(/*...*/);
        engine.getContext().setErrorWriter(/*...*/);
    }

    @Transactional
    public Object executeScript(/*...*/) throws ScriptException
    {
        Reader r = new FileReader("somePath");

        //...
        engine.eval(r);
        Invocable invocable = (Invocable) engine;
        //...
        retour = invocable.invokeFunction("someFunction",someArgs);
        //...

        return retour;
    }
}


//Example script
#encoding: utf-8

def simpleReturn(someArgs)
    variable = #Some value based on someArgs
    return variable
end

Я бы хотел иметь возможность«ставить точки останова» (если это имеет смысл) во время работы Jetty, чтобы (например) проверить значение переменной

...