2010-02-12 5 views
6

अंदर स्थापित कर रहा है जवाहरात मैं JRuby उपयोग कर रहा हूँ ककड़ी के साथ-साथ और जावा ScriptEngine के भीतर से(जे) रूबी कोड

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-full-1.6.7.jar -S मणि इंस्टॉल -i ./sass-gems sass --no-rdoc --no-ri' – Upgradingdave

उत्तर

7

रूबीजम्स सिर्फ रूबी लाइब्रेरी है। 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);