2010-03-05 5 views
39

Comment fonctionne "gem install"? Il n'est pas intuitive ...Comment installer un fichier gem Ruby téléchargé?

Mon petit bijou est vraiment ici:

[[email protected] Téléchargement]# ll *.gem 
-rw-rw-r-- 1 jean jean 16353818 mar 5 11:39 ruby-processing-1.0.9.gem 

Mais un idiomatiques "gem install" ne le voit pas ...

[[email protected] Téléchargement]# gem install ruby-processing-1.0.9.gem 
ERROR: could not find gem ruby-processing-1.0.9.gem locally or in a repository 

Quel est le problème avec ça?

Répondre

47

Peut-être que je n'ai pas entièrement compris la question. Mais si vous voulez juste installer une gemme que vous avez sur votre machine locale, tout ce que vous devez faire depuis la console est d'aller dans le répertoire contenant votre gemme et gem install --local your.gem.

12

Le problème est que gem install recherche des gems à installer dans son répertoire par défaut. Vous pouvez savoir où cela est en cours d'exécution:

$ gem environment 

Cela vous donnera quelque chose comme:

> RubyGems Environment: 
> - RUBYGEMS VERSION: 1.3.6 
> - RUBY VERSION: 1.8.6 (2007-09-24 patchlevel 111) [i486-linux] 
> - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8 
> - RUBY EXECUTABLE: /usr/bin/ruby1.8 
> - EXECUTABLE DIRECTORY: /usr/bin 
> - RUBYGEMS PLATFORMS: 
>  - ruby 
>  - x86-linux 
> - GEM PATHS: 
>  - /usr/lib/ruby/gems/1.8 
>  - /home/adminuser/.gem/ruby/1.8 

Les emplacements GEM CHEMINS est où gem install s'attend à trouver des pierres précieuses pour installer . Ainsi, la solution à votre problème serait de copier le joyau de son emplacement actuel dans le répertoire prévu, à savoir

$ cp my.gem /home/adminuser/.gem/ruby/1.8/ 

Si vous exécutez ensuite gem install il récupérera votre bijou et l'installer. Assurez-vous que vous exécutez la commande Copier en tant que super-utilisateur (sudo, si vous utilisez Ubuntu comme moi)

PS Si, lorsque vous exécutez environnement gem $, vous obtenez une « méthode non définie « manage_gems » Gem : Module (NoMethodError) » erreur, puis modifiez /usr/bin/gem et veiller à ce que les trois premières lignes du fichier ressemblent à ceci:

  1. require 'rubygems'
  2. require « rubygems/gem_runner '
  3. Gem.manage_gems

+0

Je suis en train d'installer un petit bijou de la source, qui? De préférence avec un lien symbolique pour que je puisse mettre à jour la source. – Pepijn

+0

Merci pour ça. J'ai besoin d'installer l'adaptateur Oracle et j'ai dû le faire à partir du fichier .gem car la source n'est plus disponible. – Eric

23

Juste quelques précisions au cas où vous auriez besoin de construire/installer votre propre fichier gem dans cet exemple foo-bar.

comment pourrais-je faire
gem build foo-bar.gemspec 
gem install --local foo-bar-0.1.0.gem 

je faisais des recherches sur la façon de le faire et ce poste a été premier résultat :)

+0

Merci. La deuxième ligne devrait probablement être fixée à: gem install --local foo-bar-1.0.0.gem – valk

+1

@valk bien dépend de la version spécifiée dans '* .gemspec'. Il vaut la peine de mentionner que vous n'avez pas besoin de la poignée '--local' mais la documentation dit que je l'ai respecté. –

+0

@HarisKrajina Il est utile d'avoir '--local' car cela l'empêche de vérifier chaque source pour le repo et d'économiser un peu de temps. Particulièrement utile si vous avez édité une gemme trouvée en ligne (l'a fait pour la rendre compatible avec un autre programme). – wolfcall