如何从Groovy类调用ruby类并从Groovy类执行它

如何从Groovy类调用ruby类并从Groovy类执行它,ruby,groovy,Ruby,Groovy,我写了一个ruby类,它有print语句。然后我编写了一个Groovy类,它调用这个ruby类并执行 我尝试了类似Process.execute(“ruby.exe test.rb”)的方法 Ruby代码--> Groovy代码--> 我需要以hello的形式获得输出,当我运行TestGroovy时我是ruby。来自: Groovy提供了一种执行命令行进程的简单方法。只需将命令行写成字符串并调用execute()方法。例如,在*nix机器(或安装了相应*nix命令的windows机器)上,您可以

我写了一个ruby类,它有print语句。然后我编写了一个Groovy类,它调用这个ruby类并执行

我尝试了类似Process.execute(“ruby.exe test.rb”)的方法

Ruby代码-->

Groovy代码-->

我需要以hello的形式获得输出,当我运行TestGroovy时我是ruby。

来自:

Groovy提供了一种执行命令行进程的简单方法。只需将命令行写成字符串并调用execute()方法。例如,在*nix机器(或安装了相应*nix命令的windows机器)上,您可以执行以下操作:

def process = "ls -l".execute()      // <1>
println "Found text ${process.text}" // <2>
def process=“ls-l”.execute()//
println“找到文本${process.text}”//
  • 在外部进程中执行ls命令
  • 使用命令的输出并检索tex

  • 您可以使用JSR-223脚本引擎从Groovy或Java代码执行Ruby代码。下面是一个Groovy脚本示例:

    @Grab('org.jruby:jruby:9.2.5.0')
    import javax.script.ScriptEngine
    import javax.script.ScriptEngineManager
    
    ScriptEngine engine = new ScriptEngineManager().getEngineByName('jruby')
    
    engine.eval('puts "Hello world!"')
    

    eval()
    还接受可以从文件路径获得的
    java.io.Reader
    。关于如何从Java/Groovy运行Ruby,这里有更多的细节:

    关于从Groovy执行命令行,有很多问题需要回答。只需搜索。。。
    def process = "ls -l".execute()      // <1>
    println "Found text ${process.text}" // <2>
    
    @Grab('org.jruby:jruby:9.2.5.0')
    import javax.script.ScriptEngine
    import javax.script.ScriptEngineManager
    
    ScriptEngine engine = new ScriptEngineManager().getEngineByName('jruby')
    
    engine.eval('puts "Hello world!"')