RubyGems Sporadic Weirdness

I’ve been chasing my tail on this problem for a couple days now and its
further away than ever. I am running a Rails 3.1, Ruby

1.9, Gem 1.8.15, Linux RHEL 4 environment.

The simplified problem is that ruby ‘require’ (and rails) can’t find all
the gems my app needs. And it seems that the gems require can’t find
have a gem name different than the *.rb. For example, “require ‘sass’”
locates sass.rb. But “require ‘therubyracer’” fails to locate the v8.rb
inside the lib. There is no file called ‘therubyracer.rb’. Same with
‘therubyrhino’ -
there is no’therubyrhino.rb’ but there is a ‘rhino.rb’ in the lib.

Bundle install does not throw an error even when these gems are in my

Here is an example:

First, to demonstrate the gem is installed:

locate ‘rhino.rb’

Even though ‘therubyrhino’ is installed, and in the path, and bundle
worked, ‘gem which’ cannot find it. And this gem is in the

same path as ‘sass’, below, which it can find. Here is the error:

gem which ‘therubyrhino’
ERROR: Can’t find ruby library file or shared library therubyrhino

Note that gem can find the rhino.rb file inside the gem, so the path
must be working.

gem which rhino

Require doesn’t like the rhino.rb though:

ruby -rubygems -e ‘require “rhino”’
require’: no such file to load – java (LoadError)

And it can’t find the gem by name.

ruby -rubygems -e ‘require “therubyrhino”’
require': no such file to load -- therubyrhino (LoadError) from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in require’

But as I mentioned, whith ‘therubyrhino’ in my Gemfile, Bundle install

Here is my gem path, which I am setting manually to test:


gem env

RubyGems Environment:

  • RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [i686-linux]
  • INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.9.1
  • RUBY EXECUTABLE: /usr/local/bin/ruby
  • EXECUTABLE DIRECTORY: /usr/local/bin
    • ruby
    • x86-linux
    • /usr/local/lib/ruby/gems/1.9.1
    • /usr/local/lib/ruby/gems/1.9.1/gems
    • /usr/local/lib/ruby/gems/1.9.1/gems/gem
    • :update_sources => true
    • :verbose => true
    • :benchmark => false
    • :backtrace => false
    • :bulk_threshold => 1000

And finally, here is a case where life is good and require works. All is
well and the prefix of the gem name = lib name

(…/sass/lib/sass.rb). First we can see that the sass gem is installed:

locate sass.rb

Can Gem find it? Yes.

gem which sass

And does ruby ‘require’ work? Yes.

ruby -rubygems -e ‘require “sass”’
(no error)

therubyrhino is only useful when running jruby. You mentioned
what happens when you try to require that?


On Thu, Feb 9, 2012 at 9:07 PM, Pete H. [email protected]

therubyrhino is only useful when running jruby. You mentioned
therubyracer, what happens when you try to require that?


Sorry, I hit send accidentally while revising. What I meant to say is
therubyrhino requires jruby. Check out the requirements section in the
Readme: GitHub - rubyjs/therubyrhino: Embed the Mozilla Rhino Javascript interpreter into Ruby


On Feb 9, 2012, at 18:51 , Steve Johnston wrote:


Pete’s suggestion still stands, but this stands out and needs some

I’m guessing that at some point you messed up an ENV var and set


when it should be:


and then re-installed therubyrhino. “/gems/” will be appended to your
GEM_HOME and that’s why you have a directory with “/gems/gems/” in it.

I’ll go a step further and say that if your ruby in installed “properly”
(aka, whatever way is usual on your system), don’t set GEM_HOME at all,
unless you have a damn good reason to. Rubygems will pick up the correct
gem repo on its own.