首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"rails s“和"bundle exec rails s”有什么区别?

"rails s“和"bundle exec rails s”有什么区别?
EN

Stack Overflow用户
提问于 2014-05-24 23:03:51
回答 3查看 15.7K关注 0票数 35

rails sbundle exec rails s有什么区别?人们似乎在说bundle exec rails s更好,但为什么呢?同时,this postrails s更好。

到底是哪一个?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-24 23: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。

因此,简而言之,使用:

代码语言:javascript
运行
复制
rails server
rails console
bundle exec <some command that isn't rails>
票数 42
EN

Stack Overflow用户

发布于 2014-05-24 23:06:29

bundle exec确保你从Gemfile中的gem中触发命令。

对于rails命令可能没有那么有用,但是对于rake来说肯定是必需的。

票数 4
EN

Stack Overflow用户

发布于 2014-05-24 23:08:17

http://bundler.io/v1.5/rails3.html -Rails3附带了bundler的烘焙支持

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23846493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档