2013-06-04 3 views
1

В настоящее время у меня странная проблема со связкой и рубином. если я типа:Почему пучок exec rake не запускается до правильной версии ruby ​​

$ which ruby 

я получаю:

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

И когда я типа:

$ which bundle 

Я получаю

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

Но по какой-то причине, когда я бегу

$ bundle exec rake db:migrate 

Задача выполняется с рубином 1.9.3 (я написал RUBY_VERSION ставит environment.rb)

Любой один, как идея, почему это происходит?

Вот более подробная информация: Когда я типа:

$ which rake 

я получаю:

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

Но если I

$ head -1 `which rake` 

я получаю:

#!/usr/bin/env ruby1.9.1 

ответ

1

В игре есть множество предметов. Во-первых, это может быть конфликт между вашими инструментами управления версиями Ruby и вашими глобальными драгоценными камнями. Смысл, я полагаю, возможно, что у вас есть только версия Rake, которая может работать на Ruby 1.9.1, которая находится в вашем глобальном наборе. Поэтому, когда вы запускаете Rake, он вынужден работать в Ruby 1.9.1.

Что вы можете сделать, это создать конкретный gemset для каталога. Если вы используете RVM, вы можете увидеть документацию о том, как это сделать, взглянув на их Gemset documentation. После того, как это будет сделано с версией Ruby, с которой вы хотите протестировать, выполните gem install Rake в версии, которая будет работать с этой версией Ruby. В этот момент вы должны обнаружить, что версия Ruby, используемая для запуска Rake в этом каталоге, будет такой же, как и у вашей версии.

Прошу прощения, если это не отвечает на ваш вопрос, или если вы уже подумали об этом подходе. Попытка обернуть голову вокруг этого без возможности воспроизвести проблему - это сложная сделка.

Смежные вопросы