从嵌套的 JRuby ScriptingContainer 执行 Ruby 代码

问题描述

我有一个如下的 ruby​​ 脚本

dfmas.rb
# placeholders for Java Import
class DFMAS
    # This is where the execution will start
    # Let's say user wants all the function in "Base Functions" to get loaded in the memory/context
    def main()
        # Example        
        # JScriptExecutor.load("Base Functions")
        userfunction1() # defined inside Base Functions
    end
end
DFMAS.new().main()

我正在使用 JRuby ScriptingContainer as 从 java 执行这个 ruby​​ 脚本

App.java
public class App {  
    
    public void executescript() {       
        
        ScriptingContainer subreportContainer = new ScriptingContainer();
        subreportContainer.runScriptlet("path to dfmas.rb file");       
    }
}

问题

  • 我的 ruby​​ 脚本 dfmas.rb 需要动态加载另一个 ruby​​ 脚本(存储在数据库中)才能执行。我正在尝试创建一个 Java 类作为 JScriptExecutor,它将具有 load函数,并将在相同的上下文中执行脚本,以便在 Base Function 脚本中定义的 userfunction1() 之类的方法可以被调用并执行。我可以在 ScriptingContainer 类中使用另一个 JScriptExecutor 吗?例如

    公共类 JExecutor {

     public void load(String scriptname) {       
         String scriptString =  "";
         // To Do 
         // Data base operation to fetch the script from DB
         // assign it to scriptString        
         //scriptString = dbfunctiontogetscript
         ScriptingContainer subreportContainer = new ScriptingContainer();
         subreportContainer.runScriptlet(scriptString);      
     }
    

    }

这是正确的方法吗?如果不通过上述方法我有什么建议和解决方案怎么办?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)