Ruby – I have a gem installed but require ‘gemname’ does not work. Why

rubyrubygems

The question I'm really asking is why require does not take the name of the gem. Also, In the case that it doesn't, what's the easiest way to find the secret incantation to require the damn thing!?

As an example if I have memcache-client installed then I have to require it using

require 'rubygems'
require 'memcache'

Best Solution

My system also doesn't seem to know about RubyGems' existence - unless I tell it to. The 'require' command gets overwritten by RubyGems so it can load gems, but unless you have RubyGems already required it has no idea how to do that. So if you're writing your own, you can do:

require 'rubygems'
require 'gem-name-here'

If you're running someone else's code, you can do it on the command line with:

ruby -r rubygems script.rb

Also, there's an environment variable Ruby uses to determine what it should load up on startup:

export RUBYOPT=rubygems

(from http://www.rubygems.org/read/chapter/3. The environment variable thing was pointed out to me by Orion Edwards)

(If "require 'rubygems' doesn't work for you, however, this advice is of limited help :)

Related Question