2010-05-09 5 views
20

J'ai trouvé quelques problèmes similaires ici sur SO, mais aucun ne semble correspondre à mon cas (désolé si j'ai oublié). Voici mon problème: J'ai installé oem-plugin gem à ruby ​​gems dir, mais en essayant de l'utiliser dans l'application rails me dit que ce n'est pas trouvé. Voici le résultat des commandes pertinentes:ruby ​​gem pas trouvé bien qu'il soit installé

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.

est ici l'erreur rails me donner quand j'essayer 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 bijou unique qui n'est pas trouvé par rubygems (bien qu'il soit situé là où il devrait être). Toute orientation vers la solution est très appréciée.

+0

Pourriez-vous poster le message d'erreur que Rails vous donne? –

Répondre

22

Vous avez installé deux versions différentes de Ruby. Tout d'abord est:

/usr/bin/ruby ​​

et deuxième est:

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

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

Étant donné que votre serveur Web utilise la deuxième version de Ruby, une solution consisterait à installer gem en utilisant cette version de Ruby. Alternativement, vous pouvez demander à votre serveur Web d'utiliser une version différente de Ruby - en fonction du serveur que vous utilisez, ceci peut être réalisé de différentes manières.

+1

Vous pouvez probablement faire quelque chose comme: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem install oauth- plugin pour installer gem en utilisant la version Ruby du serveur web –

+0

depuis le fichier ls -l/usr/lib/ruby ​​il semble que les deux versions dont vous parlez sont les mêmes – tommasop

+1

Vous avez raison, ces deux dossiers ont des ruby ​​différents installés: '%/usr/bin/ruby ​​-v ruby ​​1.8.7 (2009-12-24 patchlevel 248) [i686-darwin10.2.0] % /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ ruby -v rubis 1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10. 0] ' Donc, si je supprime celui de' Ruby.framework' et que je mets un lien symbolique vers le premier, je devrais être bon. – Eimantas

0

Avez-vous essayé:

require 'rubygems' 
+0

Oui. Ça ne marche pas non plus. – Eimantas

2

vous avez installé précédemment OAuth?

gem install oauth 

Il semble qu'il est needed

EDIT:

Sur votre

gem env 

vous avez

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

Mais si vous regardez l'erreur, il dit que vous exécutez

ruby 1.8.7.173 

Vous pointez différentes versions de Ruby?

+0

hmm .. cela doit être la cause même si je ne comprends pas pourquoi la commande gem installe la gemme dans un endroit et ruby ​​sur les rails prend un autre (je suis certain que j'ai une seule version de ruby ​​dans mon système). – Eimantas

+0

qu'en est-il de "sudo" gem install? A-t-il deux GEM_HOME différents? – microspino

1

Commençons par le début: avez-vous une ligne config.gem 'oauth-plugin' dans votre fichier config/environment.rb?

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

Son chemin possible votre bijou est foiré à l'intérieur de votre application Rails. La commande ci-dessus devrait vous indiquer si la gemme est réellement trouvée par des rails.

Si ce n'est pas trouvé, essayez system("gem env") à partir du script/console et de voir si quelque chose saute sur vous. Cela devrait aider au débogage.

+0

J'ai config.gem 'oauth-plugin' dans mon environnement.rb, mais quand cette ligne est présente - je ne peux pas exécuter ./script/console car la dépendance de la gemme n'est pas satisfaite. (Mais si je commente et exécuter le système 'gem qui ...' j'obtiens le chemin correct à la gemme – Eimantas

2

Juste essayer

sudo update-alternatives --config ruby 

et sélectionnez l'autre version rubis. A travaillé pour moi.

0

Sur Windows 7, en utilisant le programme rubyinstaller, j'ai sélectionné la deuxième case à cocher qui rend ruby ​​disponible partout, ce qui signifie que vous n'avez pas à configurer de chemins vers 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.