rails s
和bundle exec rails s
有什么区别?人们似乎在说bundle exec rails s
更好,但为什么呢?同时,this post说rails s
更好。
到底是哪一个?
发布于 2014-05-24 15:28:05
有时,当你安装一个gem时,它也会附带一个可执行文件/二进制文件。这些例子包括: rails,rake,rspec,pry等等。然而,当你安装了gem的多个版本时,你就会有这些可执行文件的多个版本。因此,如果您想为给定的rails应用程序执行这些二进制文件中的一个,您可能需要明确您想要哪个可执行文件--例如,用于rakev10.1的可执行文件或用于rakev10.2的可执行文件。由于这个问题的答案可以通过您的Gemfile.lock文件(由bundler创建)中的gem版本来找到,因此bundler提供了一个命令,用于根据当前项目的Gemfile.lock中指定的版本执行二进制文件。此命令为bundle exec <command>
。
因此,对于大多数命令,您需要运行bundle exec <command>
以确保运行的是适合您的项目的正确版本(同时也要确保从Gemfile.lock中指定的正确版本加载所有依赖项)。此规则的一个臭名昭著的例外是rails
命令。原因是rails
命令做的第一件事就是加载bundler并检查要执行的命令的版本。因此,在运行rails命令时,您实际上只会放慢自己的速度,一开始就涉及到bundler。
因此,简而言之,使用:
rails server
rails console
bundle exec <some command that isn't rails>
发布于 2014-05-24 15:06:29
bundle exec
确保你从Gemfile中的gem中触发命令。
对于rails
命令可能没有那么有用,但是对于rake
来说肯定是必需的。
发布于 2014-05-24 15:08:17
http://bundler.io/v1.5/rails3.html -Rails3附带了bundler的烘焙支持
https://stackoverflow.com/questions/23846493
复制相似问题