9

Ruby newbie here trying to figure out how to use a Gem and thus far the experience is not that great.

After installing mysql2 via gem I tried to use it in a simple file.

require 'mysql2'

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

Though when I run this I get:


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

Yet my gem list contains 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)

Results of "ruby 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/

What am I doing wrong here? I can't figure it out.

Thanks

-Tanner

Tanner
  • 1,214
  • 3
  • 12
  • 16

3 Answers3

6

Try:

require 'rubygems'
require 'mysql2'
subosito
  • 3,420
  • 2
  • 24
  • 12
6

As you probably noticed, you have multiple versions of ruby installed. I strongly recommand you using RVM to manage multiple ruby versions.

It is a wild guess but if you aren't using the command line to run your application and using a tools such as TextMate you might need set a shell variable "TM_RUBY" to point to the ruby version with the installed rubygems (1.8.7 (2009-06-12 patchlevel 174)).

You can try:

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

to get to the irb version with the rubygems installed and than try:

require 'rubygems'
require 'mysql2'

If thats work and you are happy with that you could either update you symbolic links in /usr/bin/ruby, /usr/bin/irb, /usr/bin/gem to point to the older version of ruby or once again install RVM and make your life much easier.

Jakobinsky
  • 1,294
  • 8
  • 11
1

To get more info, start up irb and run:

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

Also at the terminal prompt, run "gem contents mysql2". Do you see paths ending with the following?

lib/mysql2/error.rb
lib/mysql2/mysql2.bundle
lib/mysql2/client.rb
lib/mysql2/result.rb
lib/mysql2.rb
Kelvin
  • 20,119
  • 3
  • 60
  • 68
  • Running "require 'rubygems'" brings the same error: "LoadError: no such file to load -- rubygems" From "gem contents mysql2" I can find everything but lib/mysql2/mysql2.bundle – Tanner Nov 12 '10 at 20:09
  • Based on this, there seem to be 2 problems. Let take one at a time. Rubygems can't be loaded, because you can't even require it. Are you able to require any other gems? Do you have more than one version of ruby? In irb, what is the value of Config::CONFIG['bindir'] ? In irb, use this to search for rubygems.rb: $:.each {|dir| files=Dir[File.join(dir, '*gem*.rb')]; puts files if files.any? } ; nil – Kelvin Nov 12 '10 at 20:43
  • Also, at the terminal, run: head -1 \`which gem\` (in backquotes). you should see the ruby executable that the gem command is using. Does its directory match the value of Config::CONFIG['bindir'] you got from irb? – Kelvin Nov 12 '10 at 20:49
  • I cannot require any other gems and to my knowledge do not have multiple versions of ruby. I cannot run Config::CONFIG['bindir'] in irb as it throws the error that Config is an uninitialized constant. Henceforth, I cannot search for rubygems.rb. Running head -1 `which gem` results in: #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby – Tanner Nov 12 '10 at 21:25
  • I noticed that "ruby -v" gives this output "ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10]" while in "gem env" returns "1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]". I guess I'm not really sure how many versions of ruby I may have. I'm guessing that these two need to be the same? – Tanner Nov 13 '10 at 01:35
  • Sorry about the Config thing - try it again after require 'rbconfig' . Also, it looks like the ruby in your path differs from the one 'gem' is using. Run 'which ruby' at the terminal. I'm guessing you or some app installed a separate version of ruby from the one that came preinstalled on your Mac. Also, what does '/usr/bin/ruby -v' show? – Kelvin Nov 15 '10 at 00:31