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

时间:2018-12-21 06:41:39

标签: ruby groovy

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

我尝试过像Process.execute(“ ruby​​.exe test.rb”)

Ruby代码->

class Test
  puts "hello, I am ruby" 
end

Groovy代码->

class TestGroovy {

    static main(String[] args) {
        Process.execute("ruby.exe test.rb")
    }

}

我需要以hello的形式获取输出,运行TestGroovy时我是红宝石。

2 个答案:

答案 0 :(得分:0)

来自docs

  

Groovy提供了一种执行命令行过程的简单方法。只需将命令行写为字符串并调用execute()方法即可。例如,在* nix机器(或装有适当* nix命令的Windows机器)上,您可以执行以下操作:

def process = "ls -l".execute()      // <1>
println "Found text ${process.text}" // <2>
     
      
  1. 在外部进程中执行ls命令
  2.   
  3. 使用命令的输出并获取tex
  4.   

答案 1 :(得分:0)

您可以使用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,您可以从文件路径中获取。 https://github.com/jruby/jruby/wiki/RedBridge

上有许多关于从Java / Groovy运行Ruby的方法的更多详细信息。