How to tell ruby (rails) which version of rake to use?

I am playing a bit with Rails on Archlinux. and the first command I ran errored on me:

% rails new Site
...
...
...
run bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..

Errno::EACCES: Permission denied - /usr/lib/ruby/gems/1.9.1/cache
An error occurred while installing rake (10.0.2), and Bundler cannot continue.
Make sure that `gem install rake -v '10.0.2'` succeeds before bundling.

I do have ‘rake 10.0.2’ installed but I also have ‘rake 0.9.2.2’ because Archlinux bundles it with the Ruby package. I struggled to find a way to tell Rails to use the newer package.

The solution turned to be quite easy. Just set the GEM_HOME environment variable to where your gems are installed. For example:

export GEM_HOME=/home/username/.gem/

If you want it to be persistent add it to a file which is sourced every time you log in, like for zsh you can add to the file /home/username/.zshenv :

GEM_HOME=/home/username/.gem/

Now it will work:

% rails new Site
...
...
...
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

Leave a Reply

Your email address will not be published. Required fields are marked *