2010-02-12 3 views
6

Я использую JRuby вместе с огурца и ищет способ запускаУстановка драгоценных камней внутри (J) Ruby, код

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

внутри Java ScriptEngine. Никакое количество Googling не позволило мне решить эту проблему. В основном я хочу что-то сделать

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 поставляется с версией команды gem, которую вы можете использовать из java. Например, вы можете установить сасс-камень так: 'java -jar jruby-complete-1.6.7.jar -S gem install -i ./sass-gems sass --no-rdoc --no-ri' – Upgradingdave

ответ

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); 
Смежные вопросы