在(J)Ruby代码中安装gem

Lar*_*ann 6 ruby java jruby

我正在使用JRubyCucumber,正在寻找一种运行方式

 jruby -S gem update --system
 jruby -S gem install cucumber
Run Code Online (Sandbox Code Playgroud)

来自Java ScriptEngine.没有任何谷歌搜索让我解决这个问题.基本上我希望能够做这样的事情

 ScriptEngineManager manager = new ScriptEngineManager();
 ScriptEngine jRubyEngine = manager.getEngineByName("jruby");
 : // some unknown code here
 jRubeEngine.eval("call gems install/update from inside JRuby")
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个?

Jör*_*tag 7

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);
Run Code Online (Sandbox Code Playgroud)