Локально, я запускаю приложение 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, чтобы (например) проверить значение переменной