webentwicklung-frage-antwort-db.com.de

Warum installiert Bundle Install Gems in Vendor / Bundle?

Wann immer ich bundle install Tue, werden alle Edelsteine ​​auf installiert

app_dir/vendor/bundle

pfad und verbraucht viel Speicherplatz. Ich habe auch versucht, Edelsteine ​​dort zu installieren, wo sie installiert werden sollen, z. B. bei der Entwicklung von Edelsteinen:

bundle install --no-deployement

aber das funktioniert bei mir nicht und es werden Edelsteine ​​bei vendor/bundle installiert. Wie kann ich dafür sorgen, dass es global für alle Anwendungen oder in Ruby gemsets location) installiert wird? Ich habe auch versucht, .bundle/config Zu entfernen, aber nichts hat sich geändert.

Ich benutze:

rvm version: 1.23.14
Ruby version: 2.0.0-p247
Rails 3.2.13

Hier ist mein ~/.bash_profile:

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
eval "$(rbenv init -)"
alias pg='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log'

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a Shell session *as a function*
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function

Mein ~/.bashrc:

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

Einige andere Informationen, die Sie möglicherweise benötigen:

[email protected] ~/Projects/qe (develop)*$ which bundle
/Users/aman/.rvm/gems/[email protected]/bin/bundle

[email protected] ~/Projects/qe (develop)*$ rbenv which bundle
/Users/aman/.rbenv/versions/2.0.0-p247/bin/bundle

[email protected] ~/Projects/qe (develop)*$ rbenv which Ruby
/Users/aman/.rbenv/versions/2.0.0-p247/bin/Ruby

[email protected] ~/Projects/qe (develop)*$ rbenv gemset active
rbenv: NO such command `gemset'

[email protected] ~/Projects/qe (develop)*$ which Rails
/Users/aman/.rvm/gems/[email protected]/bin/Rails

Ich habe es auch versucht, aber nicht geholfen:

bundle install --system

und Entfernen des Verzeichnisses .bundle.

Bitte helfen Sie mir bei der Installation von Edelsteinen in Edelsteinsätzen, die nicht vendor/bundle Oder ein Standardort sind.

53
  1. Verwenden bundle env, um Pfade anzuzeigen und die Konfiguration zu bündeln

  2. Nach diesem Set Bundle-Pfad zu ~/.rvm/gems/Ruby-2.0.0-p247 so was:

    bundle install --path ~/.rvm/gems/Ruby-2.0.0-p247
    

    welches ist global und Sie können auch Ihren eigenen benutzerdefinierten Pfad verwenden.

  3. Posten Sie dieses bundle install wird nie wieder path brauchen und wird immer alle deine Edelsteine ​​darin installieren directory(~/.rvm/gems/Ruby-2.0.0-p247 in my case) für diese App nicht in app_folder/vendor/bundle

In Ihrem Projektordner befindet sich das Verzeichnis .bundle, Das die Konfiguration für bundler enthält. versuche diesen Ordner zu löschen. Der Installationspfad für Ihre Gems sollte auf die systemweiten Einstellungen zurückgesetzt werden.

Falls Sie nur den Installationspfad bearbeiten möchten, sollte das Öffnen von .bundle/config Mit Ihrem bevorzugten Editor den Pfad zu vendor/bundle Anzeigen. Wenn Sie diese Zeile entfernen, werden die Standardeinstellungen wiederhergestellt, ohne dass andere Konfigurationen entfernt werden müssen.

Ein weiteres weniger häufiges Szenario ist, dass Ihre systemweiten Einstellungen durcheinander gebracht werden. Laut @NaoiseGolden:

Ich musste .bundle Aus meinem Home-Ordner löschen (rm -rf ~/.bundle). Sie können Ihre Konfiguration mit bundle env Überprüfen.

84
Iuri G.

Versuchen Sie die Installation mit

bundle install --system

Ich denke anfangs wurde die Bundle-Installation mit --path flag und bundler erinnern sich jetzt an diese Konfiguration.

Vom Bündler Manpage

Einige Optionen werden zwischen Aufrufen der Bundle-Installation und der Bundler-Laufzeit gespeichert.

Bei nachfolgenden Aufrufen der Bundle-Installation werden Gems in dem Verzeichnis installiert, das ursprünglich an -- path übergeben wurde. Die Bundler-Laufzeit sucht an dieser Stelle nach Edelsteinen. Sie können diese Option zurücksetzen, indem Sie bundle install --system ausführen.

[~ # ~] edit [~ # ~]: Wie in den Kommentaren unten erwähnt und auch sonst Installiert das Edelsteinsystem breit. Wenn Sie rvm etc verwenden, um Ihre Umgebung für verschiedene Apps zu verwalten, aktivieren Sie das oben erwähnte Kontrollkästchen @ IuriG's answer .

25
mu 無

Versuchen Sie es mit bundle env. Hier erfahren Sie, wo die Pfadkonfiguration eingestellt ist.

6
Tim Moore

Zunächst scheinen Sie nach Ihren Angaben sowohl rvm als auch rbenv installiert zu haben. Das ist eine sehr schlechte Idee . Du musst einen von ihnen löschen (rbenv + bundler funktioniert wie ein Zauber für mich, habe rvm nicht ausprobiert).

In Bezug auf Ihre Frage überprüfen .bundle/config in Ihrem Projekt, da die gesamte Konfiguration für das Bundle zu diesem Projekt dort liegt (wenn es noch gelöscht ist, können Sie ein neues erstellen). Sie möchten möglicherweise diese Zeile hinzufügen (oder sie ändern, falls sie bereits vorhanden ist): BUNDLE_DISABLE_SHARED_GEMS: '0' um Edelsteine ​​zu teilen, gehen sie dorthin, wo dein BUNDLE_PATH: ist gesetzt (BUNDLE_PATH: vendor in meinem Fall).

Für die globale Konfigurationsdatei schauen Sie in ~/.bundle/config

Auch diese Manpage könnte von Nutzen sein: Bundle-Konfiguration

1
Rav.-

Führen Sie einfach den folgenden Befehl im Projektverzeichnis aus, um Gem unter Vermeidung von Pfadanbietern/Bundles systemweit zu installieren

bundle install --system
1
Rokibul Hasan