7

在 rails 3 中确实rails s调用了 bundler,这样您就不需要bundle exec rails sbundle exec需要rails s在您的应用程序 Gemfile 环境中运行?

更新 据了解,bundle exec由于rake版本不同,应该在rake任务之前使用。有关详细信息,请参阅http://railsapps.github.com/installing-rails-3-1.html 。这个问题是关于 rails 脚本的,例如:

rails s
rails server
rails c
rails console

^应该bundle exec在这些 rails 脚本之前使用,还是 bundler 由 rails 命令调用?

4

2 回答 2

9

你应该在 Rail >= 3.1 中得到这种行为,但是你需要小心,因为你可能使用的是旧版本的 rake:

使用命令 bundle exec rake 而不是 rake 是一种很好的做法,因此您将使用 gemfile 中指定的 Rake 版本(或 Gemfile.lock 文件中指定的依赖项)而不是默认版本。例如,运行 bundle exec rake db:migrate 而不是 rake db:migrate。

您需要知道的:在安装 Rails 3.1 之前,请确保您使用 Rake 0.9.2.2(或更新版本)和 gem update rake。并使用 bundle exec rake 而不是 rake。

引自:http ://railsapps.github.com/installing-rails-3-1.html

对于 rails 命令,它看起来正好相反:

不要在 rails 命令之前运行 bundle exec,rails 已经通过 Gemfile 检查了 Bundler 的存在,并根据它设置了所有内容,而没有 bundle exec 的开销。rails 命令是该规则的唯一例外。

引自:https ://www.wyeworks.com/blog/2011/12/27/bundle-exec-rails-executes-bundler-setup-3-times/

于 2012-07-23T17:16:16.127 回答
0

http://bundler.io/v1.5/rails3.html - “Rails 3 附带了对 bundler 的支持……Bundler 透明地管理您的依赖项!” 所以只需运行服务器

rails server
于 2013-11-13T18:36:08.840 回答