web-dev-qa-db-fra.com

gem rubis non trouvé bien qu'il soit installé

J'ai trouvé des problèmes similaires ici sur SO, mais aucun ne semble correspondre à mon cas (désolé si j'ai négligé). Voici mon problème: j'ai installé oauth-plugin gem dans Ruby gems dir, mais essayer de l'utiliser dans l'application Rails m'indique qu'il n'est pas trouvé. Voici la sortie des commandes pertinentes:

Installation

% s gem install oauth-plugin
Successfully installed oauth-plugin-0.3.14
1 gem installed
Installing ri documentation for oauth-plugin-0.3.14...
Installing RDoc documentation for oauth-plugin-0.3.14...

gem which oauth-plugin sortie:

% gem which oauth-plugin
/usr/lib/Ruby/gems/1.8/gems/oauth-plugin-0.3.14/lib/oauth-plugin.rb

gem env sortie:

% gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.6
  - Ruby VERSION: 1.8.7 (2009-12-24 patchlevel 248) [i686-darwin10.2.0]
  - INSTALLATION DIRECTORY: /usr/lib/Ruby/gems/1.8
  - Ruby EXECUTABLE: /usr/bin/Ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - Ruby
    - x86-darwin-10
  - GEM PATHS:
     - /usr/lib/Ruby/gems/1.8
     - /Users/eimantas/.gem/Ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => true
     - :bulk_threshold => 1000
     - :gem => ["--no-ri", "--no-rdoc"]
     - :sources => ["http://gems.Ruby.lt/", "http://rubygems.org/"]
  - REMOTE SOURCES:
     - http://gems.Ruby.lt/
     - http://rubygems.org/

Faire ls -l /usr/lib/Ruby montre ceci:

% ls -l /usr/lib/Ruby     
lrwxr-xr-x  1 root  wheel  76 Aug 14  2009 /usr/lib/Ruby -> ../../System/Library/Frameworks/Ruby.framework/Versions/Current/usr/lib/Ruby

Et la gemme en question est à l'emplacement prévu. 

Voici l'erreur que me donne Rails lorsque j'essaie d'exécuter $ rake spec

Missing these required gems:
  oauth-plugin   = 0.3.14

You're running:
  Ruby 1.8.7.173 at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby
  rubygems 1.3.6 at /Users/eimantas/.gem/Ruby/1.8, /Library/Ruby/Gems/1.8, /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/Ruby/gems/1.8

Run `rake gems:install` to install the missing gems.

Ce n'est pas un joyau qui ne soit pas trouvé par rubygems (bien qu'il soit situé où il devrait être). Toute orientation vers la solution est très appréciée.

21
Eimantas

Vous avez installé deux versions différentes de Ruby. Le premier est dans:

/ usr/bin/Ruby

et le second est dans:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby

Le problème est qu’un est utilisé en ligne de commande (c’est-à-dire pour installer des gems) et un autre est utilisé par le serveur Web pour exécuter Rails.

Puisque votre serveur Web utilise la deuxième version de Ruby, une solution serait d’installer gem en utilisant cette version de Ruby. Vous pouvez également demander à votre serveur Web d’utiliser différentes versions de Ruby. En fonction du serveur que vous utilisez, vous pouvez le faire de différentes manières.

22

Avez-vous déjà installé oauth?

gem install oauth

Il semble que c'est nécessaire

EDIT:

Sur votre

gem env

tu as

Ruby VERSION: 1.8.7 (2009-12-24 patchlevel 248) [i686-darwin10.2.0]

Mais si vous regardez l'erreur, il est écrit:

Ruby 1.8.7.173

Est-ce que vous pointez vers différentes versions de ruby?

2
tommasop

Juste essayer

Sudo update-alternatives --config Ruby 

et sélectionnez l'autre version de Ruby. Travaillé pour moi.

2
cartasu

Tout d’abord: avez-vous une ligne config.gem 'oauth-plugin' dans votre fichier config/environment.rb?

Si c'est le cas, essayez d'exécuter script/console et tapez system("gem which oauth-plugin") 

Il est possible que votre chemin d'accès aux pierres précieuses soit perturbé depuis l'intérieur de votre application Rails. La commande ci-dessus devrait vous dire si la gemme est réellement trouvée par Rails.

S'il ne l'a pas trouvé, essayez system("gem env") à partir du script/console et voyez si quelque chose vous saute aux yeux. Cela devrait aider au débogage.

1
Lolindrath

Sous Windows 7, à l'aide de rubyinstaller, j'ai sélectionné la deuxième case à cocher qui permet à Ruby d'être disponible partout, ce qui signifie que vous n'avez pas à configurer les chemins d'accès à la version de Ruby que vous avez installée. Cela peut affecter d'autres versions de Ruby ou d'autres projets si vous avez plusieurs environnements de développement.

0
lxm7

As-tu essayé:

require 'rubygems'
0
gsiener