Gems in userdir - Could not find RubyGem

Hi,

I am new to ruby and gem and I have installed a few gems (rails and
deps) in userdir.

$ HOME=$HOME/html gem list rails

*** LOCAL GEMS ***

rails (1.1.0)
Web-application framework with template engine, control-flow layer,
and ORM.

So gem seems to find the installed rails but:

$ HOME=$HOME/html ruby/bin/rails
/usr/lib/ruby/1.8/rubygems.rb:204:in report_activate_error': Could not find RubyGem rails (> 0) (Gem::LoadError) from /usr/lib/ruby/1.8/rubygems.rb:141:inactivate’
from /usr/lib/ruby/1.8/rubygems.rb:37:in
require_gem_with_options' from /usr/lib/ruby/1.8/rubygems.rb:31:inrequire_gem’
from ruby/bin/rails:17

In $HOME/html is a .gemrc file with configured gemhome and gempath.

So what I have to do so that the gem is found at execution?

Thanks
Markus

Markus K. wrote:

Web-application framework with template engine, control-flow layer,
    from /usr/lib/ruby/1.8/rubygems.rb:37:in `require_gem_with_options'
    from /usr/lib/ruby/1.8/rubygems.rb:31:in `require_gem'
    from ruby/bin/rails:17

In $HOME/html is a .gemrc file with configured gemhome and gempath.

So what I have to do so that the gem is found at execution?

Some additional info:

$ irb
irb(main):001:0> require ‘rubygems’
=> true
irb(main):002:0> require_gem ‘rake’
Gem::LoadError: Could not find RubyGem rake (> 0.0.0)

    from /usr/lib/ruby/1.8/rubygems.rb:204:in 

report_activate_error' from /usr/lib/ruby/1.8/rubygems.rb:141:inactivate’
from /usr/lib/ruby/1.8/rubygems.rb:37:in
require_gem_with_options' from /usr/lib/ruby/1.8/rubygems.rb:31:inrequire_gem’
from (irb):2
irb(main):003:0> require ‘rake’
=> true
irb(main):004:0>

So rake.rb is found but require_gem doesn’t find gem rake?!

Please, please, help me :wink:

Markus K. wrote:

Markus K. wrote:

Web-application framework with template engine, control-flow layer,
    from /usr/lib/ruby/1.8/rubygems.rb:37:in `require_gem_with_options'
    from /usr/lib/ruby/1.8/rubygems.rb:31:in `require_gem'
    from ruby/bin/rails:17

In $HOME/html is a .gemrc file with configured gemhome and gempath.

So what I have to do so that the gem is found at execution?

Some additional info:

$ irb
irb(main):001:0> require ‘rubygems’
=> true
irb(main):002:0> require_gem ‘rake’
Gem::LoadError: Could not find RubyGem rake (> 0.0.0)

    from /usr/lib/ruby/1.8/rubygems.rb:204:in 

report_activate_error' from /usr/lib/ruby/1.8/rubygems.rb:141:inactivate’
from /usr/lib/ruby/1.8/rubygems.rb:37:in
require_gem_with_options' from /usr/lib/ruby/1.8/rubygems.rb:31:inrequire_gem’
from (irb):2
irb(main):003:0> require ‘rake’
=> true
irb(main):004:0>

So rake.rb is found but require_gem doesn’t find gem rake?!

Please, please, help me :wink:

Perhaps rake is also installed as a non-gem?

Add a list of user repositories to the GEM_PATH environment variable.


– Jim W.

Jim W. wrote:

Markus K. wrote:

Markus K. wrote:
[…]

Gem::LoadError: Could not find RubyGem rake (> 0.0.0)
[…]

irb(main):003:0> require ‘rake’
=> true
irb(main):004:0>

So rake.rb is found but require_gem doesn’t find gem rake?!
[…]
Add a list of user repositories to the GEM_PATH environment variable.

Thank you Jim.
Oh, yes, with environment variable GEM_PATH it works. Why not with
…gemrc gempath? Seems that only the gem tool uses that config.

Markus

Markus K. wrote:

Jim W. wrote:

Markus K. wrote:

Markus K. wrote:
[…]

Gem::LoadError: Could not find RubyGem rake (> 0.0.0)
[…]

irb(main):003:0> require ‘rake’
=> true
irb(main):004:0>

So rake.rb is found but require_gem doesn’t find gem rake?!
[…]
Add a list of user repositories to the GEM_PATH environment variable.

Thank you Jim.
Oh, yes, with environment variable GEM_PATH it works. Why not with
…gemrc gempath? Seems that only the gem tool uses that config.

It would certainly be more consistent for RubyGems to always use .gemrc.
But if it did, then every program using RubyGems would need to load the
.gemrc file on startup. That was a bit more overhead[1] than we were
willing to introduce to unsuspecting programs. Since the only thing the
average program needs is the gem path, this is simple enough to provide
via the environment variable. The gem command does allow for more
configuration options, so it does use a configuration file.

At least that’s how it stands today. Its a judgement call, so I’m
willing to be convinced otherwise for future versions.


– Jim W.

[1] Not just time overhead, but also conceptual overhead. E.g. reading
.gemrc requires that YAML be loaded in programs that don’t otherwise
need it.