您列出宝石的顺序是否重要?这两个块是等价的吗?
gem 'carrierwave'
gem 'rmagick'
和
gem 'rmagick'
gem 'carrierwave'
答案 0 :(得分:14)
使用Bundle.require
(Rails确实如此)时,Gems按照它们在Gemfile中出现的顺序是必需的。 In并不总是这样,但是has been this way for a while。
由于Carrierwave在需要时明确要求RMagick,我认为这不重要;但严格来说,两个街区并不相同。
答案 1 :(得分:7)
Bundler不按您列出的顺序加载gem依赖项 *,但它确实按照此标准按源优先级进行:
显式路径或git选项附加到gem依赖项,例如:
gem 'some-gem', github: 'somebody/some-gem'
显式定义了宝石的依赖关系,否则需要隐式地从其他宝石属性中隐藏,即gem 'actionmailer'
gem 'rails'
宝石
如果您添加了多个来源,则会从最后一个搜索到第一个。
请参阅http://gembundler.com/v1.3/man/gemfile.5.html#SOURCE-PRIORITY
* 编辑:根据马特的回答,根据您要做的事情(或您正在加载的宝石),订单可能很重要。请参阅Even with bundler your gem order can be significant。