6 Stimmen

Installation von Edelsteinen im (J)Ruby-Code

Ich benutze JRuby zusammen mit Cucumber und suche nach einer Möglichkeit, dies auszuführen.

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

innerhalb des Java ScriptEngine. Keine Menge an Googeln hat mich zu einer Lösung für dieses Problem geführt. Grundsätzlich möchte ich in der Lage sein, etwas Ähnliches wie dies zu tun

 ScriptEngineManager manager = new ScriptEngineManager();
 ScriptEngine jRubyEngine = manager.getEngineByName("jruby");
 : // hier steht unbekannter Code
 jRubeEngine.eval("Aufruf von gems install/update von innerhalb von JRuby")

Gibt es eine Möglichkeit, dies zu erreichen?

7voto

Jörg W Mittag Punkte 349574

RubyGems ist nur eine Ruby-Bibliothek. Der gem-Befehl ist lediglich eine dünne Hülle um die Bibliothek herum. Alles, was du mit dem Befehl machen kannst, kannst du auch mit der Bibliothek machen.

Ich habe die Bibliothek tatsächlich noch nie benutzt, aber ich vermute, dass du dir die Gem::DepencyInstaller ansehen möchtest und der Code würde ungefähr so aussehen (völlig ungetestet, einfach aus meinem Hintern gezogen):

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X