Я использую JRuby наряду с Огурцом и ищу способ работать
jruby -S gem update --system
jruby -S gem install cucumber
из Java ScriptEngine. Никакой объем поиска с помощью Google не позволил мне к решению этой проблемы. В основном я хочу смочь сделать что-то вроде этого
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine jRubyEngine = manager.getEngineByName("jruby");
: // some unknown code here
jRubeEngine.eval("call gems install/update from inside JRuby")
Существует ли способ выполнить это?
RubyGems - это просто библиотека Ruby. Команда gem
- это лишь тонкая оболочка библиотеки. Все, что вы можете сделать с помощью команды, вы можете сделать с помощью библиотеки.
На самом деле я никогда не использовал библиотеку, но думаю, что вы хотите посмотреть, это Gem :: DepencyInstaller , и код будет выглядеть примерно так ( полностью непроверено , только что вытащил из моих сами-знаете-что):
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine jRubyEngine = manager.getEngineByName("jruby");
String s = "
require 'rubygems'
require 'rubygems/dependency_installer'
Gem::DependencyInstaller.new.install('cucumber')
";
jRubyEngine.eval(s);