Load custom library path

I'm trying to use a rails app that uses a newer version of RubyGems than my host provides. Since I don't have root access, I decided to try to install my own version of gems in my home directory. I did so by downloading the package and running the install using "ruby setup.rb --prefix=$HOME/gem". Then I added "$HOME/gem/bin" to my $PATH and "$HOME/gem/lib" (the location of my new rubygems.rb) to $RUBYLIB.

Now, this works fine when I test it with the webrick server (using script/server), but I get an error when trying to run it proper through Passenger. Passenger still detects the old (system-wide) version of RubyGems instead of my newly added version in my home directory.

Next, I tried adding "$LOAD_PATH.unshift '$HOME/gem/lib'" to environment.rb without any luck.

Does anyone have any ideas?

Thanks, nic.

I’m trying to use a rails app that uses a newer version of RubyGems

than my host provides. Since I don’t have root access, I decided to

try to install my own version of gems in my home directory. I did so

by downloading the package and running the install using "ruby

setup.rb --prefix=$HOME/gem". Then I added “$HOME/gem/bin” to my $PATH

and “$HOME/gem/lib” (the location of my new rubygems.rb) to $RUBYLIB.

Now, this works fine when I test it with the webrick server (using

script/server), but I get an error when trying to run it proper

through Passenger. Passenger still detects the old (system-wide)

version of RubyGems instead of my newly added version in my home

directory.

Next, I tried adding “$LOAD_PATH.unshift ‘$HOME/gem/lib’” to

environment.rb without any luck.

Does anyone have any ideas?

Thanks,

nic.

Nic, you can do one of the following:

Option 1:

  1. ask the host to install the gems that your application requires

Option 2: get a better host account that allows better access

Option 3:

  1. use rake locally to unpack the gems into vendor/gems

rake gems:unpack

Note: This requires that the dependent gems are listed in the environment.rb

and you can read that file to see how it’s done or watch any railscasts.com

screencast.

  1. upload the vendor/gems to the remote server

Note: This may not work if your application requires native gems because the local

OS may be different from the remote OS.

Option 4: use the bundler gem

  1. install the gemcutter gem (locally)

  2. install the bundler gem (locally)

Note: You can find more information about the usage at the following site:

http://github.com/wycats/bundler

Finally, you usually can add gems to the load path by doing the following within your

environment.rb:

Option 1: add gems using less ruby code within the environment.rb file

Add additional load paths for your own custom dirs

config.load_paths += %W( #{RAILS_ROOT}/extras )

Option 2: add gems using more ruby code within the environment.rb file

Dir.glob( File.expand_path( “#{RAILS_ROOT}/vendor/gems/*”, FILE) ).each do | gem |

$:.unshift File.join( gem, 'lib' )

end

Option 3: using a combination of Option (1) and (2).

Good luck,

-Conrad

I think you may have misunderstood my problem. The issue is not that I need a newer version of a certain gem, but rather that I need a new version of RubyGems itself. My app craps out at line 90 of boot.rb, which looks like this:

    84 def load_rubygems     85 min_version = '1.3.2'     86 $stderr.puts $:.inspect     87 require 'rubygems'     88 unless rubygems_version >= min_version     89 $stderr.puts %Q(Rails requires RubyGems >= # {min_version} (you have #{rubygems_version}). Please `gem update -- system` and try again.)     90 exit 1     91 end

I added line 86, btw, to check the value of $:. This is the output I get in my error log:

["/home/ncolgan/gem/lib", "/root/passenger-2.1.1/lib", "/root/ passenger-2.1.1/ext", "/usr/lib64/ruby/gems/1.8/gems/fastthread-1.0.7/ bin", "/usr/lib64/ruby/gems/1.8/gems/fastthread-1.0.7/lib", "/usr/ lib64/ruby/gems/1.8/gems/fastthread-1.0.7/ext", "/usr/lib64/ruby/ site_ruby/1.8", "/usr/lib64/ruby/site_ruby/1.8/x86_64-linux", "/usr/ lib64/ruby/site_ruby", "/usr/lib64/ruby/1.8", "/usr/lib64/ruby/1.8/ x86_64-linux", "."] Rails requires RubyGems >= 1.3.2 (you have 1.3.1). Please `gem update --system` and try again.

As you can see, my directory (/home/ncolgan/gem/lib) WAS added to $: but the new version of RubyGems (1.3.5) located in that directory wasn't detected.

Any help is appreciated.

nic.