J'ai des problèmes ici. Je travaille avec un projet Rails 2.3 (travailler sur le serveur de production via ssh - ne demandez pas pourquoi). Voici le Gemfile . Lorsque delay_jobs essaie de démarrer, le résultat dit que je dois installer la gem de groupement. Le problème est que gemdir est /var/lib/gems/1.8/ et je n'ai pas les privilèges d'écriture pour ce répertoire. Cependant, il existe un répertoire sous ~/projects/shared/gems/Ruby/1.8/gems où je peux écrire.
Comment définir le chemin d'installation d'une gemme?
Vous pouvez ajouter ce qui suit dans votre fichier config.ru :
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
Cela indiquera à votre application rack où chercher des gemmes.
Configurez également votre serveur .bashrc :
export GEM_HOME="$HOME/projects/shared/gems/Ruby/1.8/gems"
export GEM_PATH="$GEM_HOME:/var/lib/Ruby/gems/1.8"
Pour installer foo gem dans un dossier spécifié, utilisez simplement l’option --install-dir
, c.-à-d.
$ gem install --install-dir /path/to/gems/folder foo
Cela aide quand:
bundle install
- par ex. si on veut installer bundle gem lui-même, ou installer une gemme (qui n'est pas listée dans Gemfile) dans le dossier bundle Sudo gem install
échoue en raison d'un manque d'autorisations en écriture pour un chemin d'installation par défautJ'espère que cela pourra aider.
La variable d'environnement GEM_HOME
définit l'emplacement d'installation de la gemme. Vous devez le définir à l'emplacement souhaité. La commande est spécifique au système d'exploitation.
Dans Windows c'est set
set GEM_HOME=[path]/projects/shared/gems/Ruby/1.8/gems
Linux serait export
export GEM_HOME=~/projects/shared/gems/Ruby/1.8/gems
le bundler accepte une option --path.
bundle install --path vendor/bundle