Ich habe hier Schwierigkeiten. Ich arbeite mit einem Rails 2.3-Projekt (arbeite auf dem Produktionsserver über ssh - fragen Sie nicht nach dem Grund). Hier ist das Gemfile . Wenn delayed_jobs zu starten versucht, sagt die Ausgabe, dass ich den Bundler gem installieren muss. Das Problem ist, dass das gemdir /var/lib/gems/1.8/ ist und ich nicht die Schreibrechte für dieses Verzeichnis habe. Es gibt jedoch ein Verzeichnis unter ~/projects/shared/gems/Ruby/1.8/gems, in das ich schreiben kann.
Wie kann ich den Installationspfad für einen Edelstein festlegen?
Sie können Ihrer config.ru -Datei Folgendes hinzufügen:
ENV['GEM_HOME']="#{ENV['HOME']}/projects/shared/gems/Ruby/1.8/gems"
ENV['GEM_PATH']="#{ENV['GEM_HOME']}:/var/lib/Ruby/gems/1.8"
require 'rubygems'
Gem.clear_paths
Dadurch erfahren Sie in Ihrer Rack-App, wo Sie nach Edelsteinen suchen müssen.
Konfigurieren Sie auch Ihren Server .bashrc :
export GEM_HOME="$HOME/projects/shared/gems/Ruby/1.8/gems"
export GEM_PATH="$GEM_HOME:/var/lib/Ruby/gems/1.8"
Um foo gem in einem angegebenen Ordner zu installieren, verwenden Sie einfach die Option --install-dir
, d. H.
$ gem install --install-dir /path/to/gems/folder foo
Es hilft, wenn:
bundle install
kann nicht verwendet werden - z. wenn man bundle gem selbst installieren möchte oder einen gem (der nicht in Gemfile aufgeführt ist) in den Ordner bundle installieren möchteSudo gem install
schlägt fehl, weil keine Schreibberechtigungen für einen Standardinstallationspfad vorhanden sindHoffentlich hilft das.
Die Umgebungsvariable GEM_HOME
definiert den Installationsort des Edelsteins. Sie müssen den gewünschten Ort einstellen. Der Befehl ist betriebssystemspezifisch.
In Windows ist es set
set GEM_HOME=[path]/projects/shared/gems/Ruby/1.8/gems
Linux wäre export
export GEM_HOME=~/projects/shared/gems/Ruby/1.8/gems
bundler akzeptiert eine Option --path.
bundle install --path vendor/bundle