2012-07-24 18 views
43

Ich weiß, dass bei Verwendung von gem install der Edelstein unter /home/username/.rvm/gems/ gespeichert wird, unter welchem ​​Edelstein der Edelstein installiert wurde.Wo speichert Bundler Edelsteine?

Aber wenn ich Bundler verwenden und den Edelstein in der Gemfile angeben, wenn ich Bundle installiere, wo werden diese Edelsteine ​​gespeichert? Und was ist, wenn ich das Juwel bereits mit gem install installiert habe, wenn ich das Bundle install installiere, wird es das vorherige Juwel verwenden, das mit gem install installiert wurde?

+17

'Bündel zeigen ' – Chowlett

+0

danke, ich habe ganz vergessen über diesen Befehl. – maru

Antwort

40

Es kommt darauf an. In der üblichen Entwicklungsumgebung werden sie dort installiert, wo sie sind, wenn Sie ein Juwel "normal" installieren (indem Sie gem install foo ausführen) und Bundler wird keine bereits vorhandenen Edelsteine ​​neu installieren. Dieser Ort hängt davon ab, wie Rubygems selbst konfiguriert sind.

Wenn Sie Bundle mit dem --deployment Option installieren laufen dann die Edelsteine ​​in einem Ort einzigartig für Ihre App installiert werden (Sie diese als separate Option passieren können, aber es standardmäßig Verkäufer/Bündel)

Sie können auch Führen Sie bundle package aus, um alle .gem-Dateien zu speichern, die Ihre App in vendor/cache verwendet. Running bundle install wird Edelsteine ​​in Vendor/Cache zu Edelsteinen in anderen Standorten bevorzugen.

+0

cool! danke für das Hinzufügen in mehr Details, sehr geschätzt. – maru

+0

Sie können den Installationspfad auch als Parameter für [Bundle-Installation] angeben (http://gembundler.com/v1.2/bundle_install.html): '$ bundle install --path vendor/bundle' – webwurst

+2

habe ich nicht Verstehen Sie die Antwort. Was ist der Standardinstallationspfad für die Paketinstallation? Wenn es in der Entwicklung verwendet wird. –

2

Hier /usr/local/lib/ruby/gems/2.1.0/gems/ und hier: /usr/local/lib/ruby/gems/2.1.0/bundler/gems/.

+1

Ich könnte mir vorstellen, dass dies nur für bestimmte Betriebssysteme gilt. –

+2

Wissen Sie, wie Bundler entscheidet, welche Edelsteine ​​in welches Verzeichnis gehen? –

40

Wenn Sie herausfinden möchten, wo ein bestimmtes Juwel gespeichert ist, können Sie bundle show <gem-name> ausführen. Zum Beispiel:

[email protected]$ bundle show rake 
/var/bundle/ruby/2.1.0/gems/rake-10.4.2 
+0

Bedeutet dies, dass alle Edelsteine ​​nur auf deinem Rubin installiert sind? – Jwan622