Gemfile中gem的顺序是否有所不同?
您列出gem的顺序是否重要? 这两个块是等价的吗?
gem 'carrierwave' gem 'rmagick'
和
gem 'rmagick' gem 'carrierwave'
当您使用Bundle.require
(Rails确实如此)时,Gems按照它们在Gemfile中出现的顺序是必需的。 并不总是这样,但这种方式已经有一段时间了 。
由于Carrierwave在需要时明确要求RMagick,我认为这不重要; 但严格来说,两个街区并不相同。
Bundler不会按列出的顺序加载gem依赖项 *,但它确实使用以下条件按源优先级:
-
显式路径或git选项附加到gem依赖项,例如:
gem 'some-gem', github: 'somebody/some-gem'
-
明确定义gem的依赖关系,否则需要隐式地从其他gem依赖关系中获取,即
gem 'actionmailer'
gem是gem 'actionmailer'
隐式要求gem 'rails'
-
如果添加了多个源,它将从最后一个搜索到第一个。
请参见http://gembundler.com/v1.3/man/gemfile.5.html#SOURCE-PRIORITY
* 编辑:根据马特的回答,取决于你想要做什么(或者你正在加载什么gem),订单可能很重要。 请参阅即使使用捆绑器,您的gem订单也很重要 。
- 什么时候需要在rails Gemfile中使用require?
- 〜>符号在捆绑器Gemfile中的含义是什么?
- 是否可以覆盖gemfile进行本地开发?
- 捆绑安装问题
- 您的软件包已锁定到rake(12.0.0),但在Gemfile中列出的任何源中都找不到该版本。
- 了解Gemfile.lock:是否可以删除Gemfile.lock然后再次运行bundle install?
- 由于“mysql2”gem,我无法运行“bundle update”
- 将Ruby on Rails应用程序(OpenConferenceWare)部署到IBM Bluemix
- “您的Ruby版本是1.9.3,但您的Gemfile指定为1.9.3-p194”