在Maven应用中运行的远程调试JRuby

时间:2019-06-20 17:07:08

标签: maven debugging jruby scriptengine

在本地,我正在Jetty内部运行一个maven应用程序(首先,我们将其部署为对tomcat的战争),该应用程序使用Java的ScriptEngine来运行来自FileSystem的Ruby脚本(该外部逻辑文件由非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时“设置断点”(如果有意义),以便(例如)检查变量的值

0 个答案:

没有答案