Martinos
Martinos

Reputation: 2226

Why bundle exec rake does not run to proper version of ruby

I am currently having a strange issue with bundler and ruby. if I type:

$ which ruby

I get:

/home/martinos/.rubies/1.8.7-p370/bin/ruby

And when I type:

$ which bundle

I get

/home/martinos/.gem/ruby/1.8.7/bin/bundle

But for some reason when I run

$ bundle exec rake db:migrate

The task is run with ruby 1.9.3 (I have written a puts RUBY_VERSION in environment.rb)

Any one as an idea why this happens?

Here is more infos: When I type:

$ which rake

I get:

/home/martinos/.gem/ruby/1.8.7/bin/rake

But if I

$ head -1 `which rake`

I get:

#!/usr/bin/env ruby1.9.1

Upvotes: 1

Views: 206

Answers (1)

Geoff Petrie
Geoff Petrie

Reputation: 424

There are a variety of pieces that could be in play. The first is that it could be a conflict between your Ruby version management tools and your global gems. Meaning, I suppose it is possible that you only have a Rake version that can work on Ruby 1.9.1 that is in your global set. So when you fire up Rake it is forced to run in Ruby 1.9.1.

What you may want to do is create a directory specific gemset. If you're using RVM you can see the documentation on how to do that by looking at their Gemset documentation. Once that is in place with the Ruby version you want to test with, then do a gem install of Rake at the version that will work with that Ruby version. At that point you should find that the Ruby version being used to run Rake in that directory will be the same as the version you have running.

I apologize if this does not answer your question, or if you have thought of this approach already. Trying to wrap my head around this without the ability to reproduce the problem is a tricky deal.

Upvotes: 1

Related Questions