Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在(J)Ruby代码中安装gems_Java_Ruby_Jruby - Fatal编程技术网

Java 在(J)Ruby代码中安装gems

Java 在(J)Ruby代码中安装gems,java,ruby,jruby,Java,Ruby,Jruby,我正在使用JRuby和Cucumber并正在寻找一种跑步方式 jruby -S gem update --system jruby -S gem install cucumber 从Java内部。再多的谷歌搜索也没有让我找到解决这个问题的方法。基本上我希望能做这样的事情 ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine jRubyEngine = manager.getEngineByName("

我正在使用JRubyCucumber并正在寻找一种跑步方式

 jruby -S gem update --system
 jruby -S gem install cucumber
从Java内部。再多的谷歌搜索也没有让我找到解决这个问题的方法。基本上我希望能做这样的事情

 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
命令只是库的一个薄包装。您可以使用命令执行的所有操作,都可以使用库执行

我从来没有实际使用过这个库,但我想你想看的是,代码应该是这样的(完全未经测试,只是从我的代码中抽出,你知道吗):


如果有人偶然发现这个问题,我最近在这里创建了一个屏幕,可能会有所帮助:。我相信jrubycomplete附带了一个gem命令版本,您可以从java中使用它。例如,您可以像这样安装sass gem:
java-jar jruby-complete-1.6.7.jar-S gem install-i./sass gems sass--no-rdoc--no-ri
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);