Getting Ruby to talk to MySQL was pretty easy in irb:
C:\>irb irb(main):001:0> require 'rubygems' => true irb(main):002:0> require 'mysql' => true irb(main):003:0> db = Mysql.connect('localhost', 'root', 'password', 'test') => #<Mysql:0x2cc5270> irb(main):004:0>
But then I tried the very same code from a file:
C:\>ruby mysql.rb ./mysql.rb:3: uninitialized constant Mysql (NameError) from C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from mysql.rb:2
That require 'mysql'
line looks in the current directory first … and I’d used the name mysql.rb
for the file I was coding … so my code just included itself, and not the gem I wanted. Doh!
I’ve been bit by something similar in Python. Calling it mysql.py, and then trying to import a “real” mysql module elsewhere. :)
Comment by Joshua Kugler — July 24, 2009 @ 3:11 pm
wow… I did exactly the same thing. Doh! is right.
Thanks for the tip.
Comment by John — July 7, 2010 @ 8:48 am