Вы обязательно должны проверить свой Gemfile.lock. Он содержит версии вашего драгоценного камня, который, как вы знаете, будет работать с вашим приложением. Поэтому, когда вы комплектуете инсталляцию в другой среде, вы знаете, что она должна работать.
Скажем, через несколько месяцев кто-то делает установку пакета без Gemfile.lock. Они получат самую последнюю версию драгоценных камней в вашем Gemfile (по крайней мере, с указанной версией), и не будет никакой гарантии, что ваше приложение будет работать даже с этими драгоценными камнями. С Gemfile.lock должна быть некоторая уверенность в том, что ваше приложение должно работать, поскольку любой, кто работал с ним или проводил на нем тесты, должен был иметь его в переходном состоянии с этими замороженными версиями gem.
Чтобы решить вашу проблему, я бы сделал:
bundle update rake
и затем зафиксируйте Gemfile и Gemfile.lock. Таким образом, вы говорите всем, кто запускает ваше приложение, что вы должны использовать 0.9.2.2 рейка. Эта версия рейка, которую вы знаете, будет работать с вашим приложением, и ваши тесты будут выполняться с этой версией.
Чтобы запустить правильную версию, у вас есть несколько вариантов:
комплектация exec:
$ bundle exec rake -T
Добавление псевдонима к вашему .bash_profile, .zshrc или .profile также может помочь:
# in .bash_profile
alias b="bundle exec"
$ b rake -T
Это установит двоичные файлы вашего Gemfile в каталог ./bin, и изменение пути заставит вашу оболочку сначала зарегистрироваться ./bin, прежде чем искать в rvm или в ваших двоичных файлах установки gem. Не забудьте добавить 'bin' в ваш файл .gitignore, если вы сделаете это.
- rubygems-bundler гем. Этот драгоценный камень генерирует оболочки, которые пытаются определить, когда использовать для вас bundle exec.