2010-11-12 5 views
8

Ruby débutant ici en essayant de comprendre comment utiliser un Gem et jusqu'ici l'expérience n'est pas terrible. Après l'installation de mysql2 via gem, j'ai essayé de l'utiliser dans un fichier simple après l'installation de mysql2 via gem.Ruby Gem - LoadError

 
require 'mysql2' 

#client = Mysql2::Client.new(:host => "localhost", :username => "username") 

Bien que quand je lance ce je reçois:

 

Parse.rb:1:in `require': no such file to load -- mysql2 (LoadError) 
from Parse.rb:1 

Pourtant ma liste de pierres précieuses contient mysql2:

 
Tanner-Smiths-MacBook-Pro:Humans_vs_Zombies_Parse tanner$ gem list 

*** LOCAL GEMS *** 

abstract (1.0.0) 
actionmailer (3.0.1, 2.3.5, 1.3.6) 
actionpack (3.0.1, 2.3.5, 1.13.6) 
actionwebservice (1.2.6) 
activemodel (3.0.1) 
activerecord (3.0.1, 2.3.5, 1.15.6) 
activeresource (3.0.1, 2.3.5) 
activesupport (3.0.1, 2.3.5, 1.4.4) 
acts_as_ferret (0.4.3) 
arel (2.0.2) 
builder (2.1.2) 
capistrano (2.5.19, 2.5.2) 
cgi_multipart_eof_fix (2.5.0) 
daemons (1.1.0, 1.0.10) 
dnssd (1.4, 0.6.0) 
erubis (2.6.6) 
fastthread (1.0.7, 1.0.1) 
fcgi (0.8.8, 0.8.7) 
ferret (0.11.6) 
gem_plugin (0.2.3) 
highline (1.6.1, 1.5.0) 
hpricot (0.8.3, 0.6.164) 
i18n (0.4.2) 
jk-ferret (0.11.8.2) 
libxml-ruby (1.1.4, 1.1.2) 
mail (2.2.9) 
mime-types (1.16) 
mongrel (1.1.5) 
mysql2 (0.2.6) 
needle (1.3.0) 
net-scp (1.0.4, 1.0.1) 
net-sftp (2.0.5, 2.0.1, 1.1.1) 
net-ssh (2.0.23, 2.0.4, 1.1.4) 
net-ssh-gateway (1.0.1, 1.0.0) 
polyglot (0.3.1) 
rack (1.2.1, 1.0.1) 
rack-mount (0.6.13) 
rack-test (0.5.6) 
rails (2.3.5, 1.2.6) 
railties (3.0.1) 
rake (0.8.7, 0.8.3) 
RedCloth (4.2.3, 4.1.1) 
ruby-openid (2.1.8, 2.1.2) 
ruby-yadis (0.3.4) 
rubynode (0.1.5) 
sqlite3-ruby (1.3.2, 1.2.4) 
termios (0.9.4) 
thor (0.14.4) 
treetop (1.4.8) 
tzinfo (0.3.23) 
xmpp4r (0.5, 0.4) 

Résultats de "rubis env":

 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.3.5 
    - RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] 
    - INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8 
    - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby 
    - EXECUTABLE DIRECTORY: /usr/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - universal-darwin-10 
    - GEM PATHS: 
    - /Library/Ruby/Gems/1.8 
    - /Users/tanner/.gem/ruby/1.8 
    - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - http://gems.rubyforge.org/ 

Qu'est-ce que je fais mal ici? Je ne peux pas comprendre.

Merci

-Tanner

+0

J'ai presque le même problème, avez-vous trouvé une solution? –

Répondre

6

Comme vous l'avez probablement remarqué, vous avez installé plusieurs versions de ruby. Je vous recommande fortement d'utiliser RVM pour gérer plusieurs versions de ruby. Si vous n'utilisez pas la ligne de commande pour exécuter votre application et que vous utilisez un outil tel que TextMate, vous devrez peut-être définir une variable shell "TM_RUBY" pour pointer vers la version ruby ​​avec les rubygems installés. (1.8.7 (2009-06-12 patchlevel 174)).

Vous pouvez essayer:

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

pour arriver à la version irb avec les rubygems installés et que d'essayer:

require 'rubygems' 
require 'mysql2' 

Si c'est le travail et vous êtes satisfait de ce que vous pouvez soit vous mettre à jour des liens symboliques dans/usr/bin/ruby,/usr/bin/irb,/usr/bin/gem pour pointer vers l'ancienne version de ruby ​​ou encore installer RVM et vous faciliter la vie.

6

Essayez:

require 'rubygems' 
require 'mysql2' 
+0

Même erreur sauf que 'mysql2' a 'rubygems' – Tanner

+0

A quoi ressemble votre sortie 'gem env'? – subosito

+0

Résultats dans les messages originaux. – Tanner

0

Pour obtenir plus d'informations, lancez irb et exécutez:

 
require 'rubygems' 
gem 'mysql2' #=> does this cause an error? 
$:.grep /mysql2/ #=> if no error from previous line, please post what this shows 

également à l'invite du terminal, exécutez " contenu de gem mysql2 ". Voyez-vous des chemins se terminant par ce qui suit?

 
lib/mysql2/error.rb 
lib/mysql2/mysql2.bundle 
lib/mysql2/client.rb 
lib/mysql2/result.rb 
lib/mysql2.rb 
+0

Exécuter "require 'rubygems'" apporte la même erreur: "LoadError: aucun fichier de ce type à charger - rubygems" De "gem contents mysql2" Je peux tout trouver sauf lib/mysql2/mysql2.bundle – Tanner

+0

Basé sur ce , il semble y avoir 2 problèmes. Laissez-en prendre un à la fois. Rubygems ne peut pas être chargé, car vous ne pouvez même pas l'exiger. Êtes-vous capable d'exiger d'autres gemmes? Avez-vous plus d'une version de ruby?En irb, quelle est la valeur de Config :: CONFIG ['bindir']? Dans irb, utilisez ceci pour rechercher rubygems.rb: $ :. chaque {| dir | files = Dir [File.join (dir, '* gem * .rb')]; met les fichiers si files.any? } – Kelvin

+0

Aussi, au terminal, exécutez: head -1 \ 'quelle gem \' (dans les backquotes). vous devriez voir l'exécutable ruby ​​que la commande gem utilise. Est-ce que son répertoire correspond à la valeur de Config :: CONFIG ['bindir'] que vous avez obtenue avec irb? – Kelvin