我正在使用 JRuby 以及黄瓜,正在寻找一种运行方式
jruby -S gem update --system
jruby -S gem install cucumber
来自Java ScriptEngine。没有任何谷歌搜索让我解决这个问题。基本上我希望能够做这样的事情
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine jRubyEngine = manager.getEngineByName("jruby");
: // some unknown code here
jRubeEngine.eval("call gems install/update from inside JRuby")
有没有办法实现这个目标?
答案 0 :(得分: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);