web-dev-qa-db-fra.com

Spécifiez le répertoire d'installation de Gem

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?

22
Almaron

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"
12
dpaluy

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:

  • on ne peut pas utiliser 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
  • La commande Sudo gem install échoue en raison d'un manque d'autorisations en écriture pour un chemin d'installation par défaut

J'espère que cela pourra aider.

26
Oleg Afanasyev

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
13
IKA

le bundler accepte une option --path.

bundle install --path vendor/bundle
0
Brad