Установка драгоценных камней внутри (J) код Ruby

Я использую 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")

Существует ли способ выполнить это?

6
задан Lars Tackmann 12 February 2010 в 11:42
поделиться

1 ответ

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);
7
ответ дан 17 December 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: