2010-02-12 53 views
6

安装宝石我使用JRuby的黄瓜沿并正在寻找从Java ScriptEngine内运行内(J)Ruby代码

jruby -S gem update --system 
jruby -S gem install cucumber 

的一种方式。谷歌搜索量没有让我去解决这个问题。基本上我想能够做到这样的事情

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

有没有办法完成这个?

+0

如果有人遇到这个问题,我最近在这里创建了一个可能帮助你的屏幕:http://javajing.com/2012/06/01/ruby-from-java.html。我相信jruby-complete附带了一个可以从java中使用的gem命令版本。例如,您可以像这样安装sass gem:'java -jar jruby-complete-1.6.7.jar -S gem install -i ./sass-gems sass --no-rdoc --no-ri' – Upgradingdave 2012-07-11 12:25:31

回答

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);