From: Gregory Brown Date: 2007-07-17T04:05:11+09:00 Subject: Re: Odd requirement behavior between two environments On 7/16/07, Ian Whitney wrote: > Ok, so that looks good. I can require the gem & then IRB knows what > ActiveRecord is. Great. > > New development machine where this doesn't work > Ruby 1.8.6 > Gems 0.9.4 > ActiveRecord gem installed 1.15.3 > > Results of IRB session on the new development machine > > irb(main):001:0> require 'rubygems' > => true > irb(main):002:0> gem 'activerecord' > => true > irb(main):003:0> ActiveRecord > NameError: uninitialized constant ActiveRecord > from (irb):3 > > So, something is up. In line 2 I'm using the command newer command 'gem' > instead of the depreciated 'require_gem'. But I get the same result even if > I use the depreciated command. > > Any ideas? Something I forgot to install on this new machine? Or some weird > configuration change I made on the old machine that I didn't copy over. require_gem / gem are not the same as require. They're meant for locking gems to specific versions or making sure they exist, not loading libraries, e.g. gem "ruport", "=1.0.1" Also, with that in mind note that gem names don't always coincide with library names, so you actually will need to do this: require "rubygems" require "active_record" In earlier versions of RubyGems, it was possible for the require_gem command to autoload libraries, this is no longer the case. Hope that helps... -greg