2017-07-02 6 views
0

Schnelle Metaprogrammierungsfrage. In meinem Projekt "rails 5" möchte ich den Installationsort eines bestimmten Edelsteins im Code finden (dh keine Befehlszeile).Schienen Metaprogrammierung: Wo ist dieses Juwel installiert?

Ich begann mit Bundler.install_path.

Wenn ich das sehe, sehe ich alle Versionen der verschiedenen Edelsteine, die ich für diesen Rubin installiert habe (ich benutze rbenv, aber das sollte auch für rvm funktionieren).

/home/user/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mygem-7eafb06c791d/ /home/user/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mygem-3da2bf38d01a/

...and so on

Gibt es eine Möglichkeit Bündler zu sagen: „Können Sie mir das Verzeichnis sagen, wo das Juwel mygem installiert ist? Oder wenn es ein Hash gem Namen mit ihren Verzeichnissen (oder so ähnlich), das ist auch in Ordnung

Bonus:. wenn es ein Leitfaden für das Innenleben von Bündler, dass wäre cool zu :)

Antwort

2

Bündler hat den show Befehl, um die Position eines Juwel zu zeigen:

bundle show mygem

+0

Dank! Ich verwende den Bundler-Quellcode basierend auf dieser Antwort, um zu bekommen, was ich brauche. :> –

0

rbenv-bundler ist ein plugin, das die rbenv-shims Bundler-bewusst macht, so dass man nicht bündler exec vor jedem Befehl eingeben muss. Sie können

BUNDLE_PATH: ~/vendor/some_path 

innen ~/.bundle/config (mac/linux) mit erstellen eine Konfigurationsdatei Einstellung der Bündler verwalten, wenn Sie weitere Informationen benötigen, die Bündler über Config können Sie this bundler.io link überprüfen