Как вызвать класс ruby ​​из класса Groovy и выполнить его из класса Groovy - PullRequest
0 голосов
/ 21 декабря 2018

Я написал класс ruby, в котором есть оператор print.Затем я написал класс Groovy, который вызывает этот класс ruby ​​и выполняет

Я пробовал как Process.execute ("ruby.exe test.rb")

Ruby code ->

class Test
  puts "hello, I am ruby" 
end

Groovy код ->

class TestGroovy {

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

}

Мне нужно получить вывод как привет, я рубин, когда я запускаю TestGroovy.

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Вы можете выполнить код Ruby из Groovy или Java-кода, используя механизм сценариев JSR-223.Вот пример скрипта 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, который вы можете получить по пути к файлу.Здесь много подробностей о способах запуска Ruby из Java / Groovy: https://github.com/jruby/jruby/wiki/RedBridge

0 голосов
/ 21 декабря 2018

Из документов :

Groovy предоставляет простой способ выполнения процессов командной строки.Просто напишите командную строку в виде строки и вызовите метод execute ().Например, на * nix-машине (или на машине с Windows, на которой установлены соответствующие * nix-команды) вы можете выполнить это:

def process = "ls -l".execute()      // <1>
println "Found text ${process.text}" // <2>
  1. выполняет команду ls во внешнем процессе
  2. использовать вывод команды и получить текст
...