bundle exec rake some:task
выполняет задачу рейка в контексте вашего пакета.
Вы не явно указать Rails, но я вижу, что вы пост с тегами Rails так надуманный примера этого в действии может быть следующим:
У вас есть версия 2.0 фиктивного whateva-whateva
драгоценного камня установленный в вашей системе по какой-либо веской причине.
Вы решили, что хотите удалить старый проект Rails откуда-нибудь, чтобы проверить его и запустить bundle install
в корневой папке клонированного проекта. Эта команда установит все драгоценные камни, которые требуется Rails-приложению, и один из них, вероятно, является версией 1.0 из фиктивного whateva-whateva
драгоценного камня.
Итак, текущее состояние: ваше старое приложение-рельс имеет комплект жемчужинок, который включает более старую версию whateva-whateva
, а ваши общесистемные драгоценные камни включают более новую версию драгоценного камня whateva-whateva
.
Когда вы запускаете задачи рейка, связанные с вашим Rails-приложением, какую версию вы хотите загрузить? Старейший, конечно.
Для этого вы можете использовать bundle exec rake the:task
, и он запускает команду rake в контексте вашего пакета - более старую версию драгоценного камня плюс любые другие материалы, указанные в Gemfile старого rails.
Итак, после всего этого, я думаю, можно с уверенностью сказать, что ЛУЧШАЯ практика будет заключаться в том, что вы всегда должны предлагать bundle exec
, но, честно говоря, я довольно ленив и редко делаю это, если не вижу проблем.
В других новостях, если вы используете binstubs Bundler, вам не нужно его добавлять. Вот ссылка на настройки, что до: http://robots.thoughtbot.com/post/15346721484/use-bundlers-binstubs