您列出宝石的顺序重要吗?这两个块是等价的吗?
gem 'carrierwave'
gem 'rmagick'
和
gem 'rmagick'
gem 'carrierwave'
您列出宝石的顺序重要吗?这两个块是等价的吗?
gem 'carrierwave'
gem 'rmagick'
和
gem 'rmagick'
gem 'carrierwave'
当您使用时Bundle.require
(Rails 会这样做),Gems 需要按照它们在 Gemfile 中出现的顺序。In 并不总是这样,但已经有一段时间了。
由于 Carrierwave 在需要时明确需要 RMagick,因此我认为这对您而言并不重要;但严格来说,这两个块并不等价。
Bundler 不会按照您列出它们的顺序加载 gem 依赖项*,但它确实使用以下标准按源优先级:
显式路径或 git 选项附加到 gem 依赖项,例如:
gem 'some-gem', github: 'somebody/some-gem'
为其他 gem 依赖项隐式需要的 gem 显式定义的依赖项,即gem 'actionmailer'
gem 被隐式需要gem 'rails'
如果您添加了多个来源,它将从最后一个搜索到第一个。
见https://bundler.io/man/gemfile.5.html#SOURCE-PRIORITY
编辑:根据马特的回答,取决于你想要做什么(或者你正在加载什么宝石),订单可能很重要。请参阅即使使用 bundler,您的宝石订单也可能很重要。