Gemfile中的宝石顺序是否有所不同?

dee*_*dee 24 ruby ruby-on-rails gemfile

您列出宝石的顺序是否重要?这两个块是等价的吗?

gem 'carrierwave'
gem 'rmagick'
Run Code Online (Sandbox Code Playgroud)

gem 'rmagick'
gem 'carrierwave'
Run Code Online (Sandbox Code Playgroud)

mat*_*att 14

当你使用Bundle.require(Rails这样做)时,Gems按照它们在Gemfile中出现的顺序是必需的.并不总是这样,但这种方式已经有一段时间了.

由于Carrierwave在需要时明确要求RMagick,我认为在您的情况下它并不重要; 但严格来说,两个街区并不相同.


Noz*_*Noz 7

Bundler不会按列出的顺序加载gem依赖项*,但它确实使用以下条件按源优先级:

  1. 显式路径或git选项附加到gem依赖项,例如:

    gem 'some-gem', github: 'somebody/some-gem'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 明确定义宝石的依赖关系,否则需要从其他宝石依赖gem 'actionmailer'隐式地要求,即宝石隐含地要求gem 'rails'

  3. 如果您添加了多个来源,则会从最后一个搜索到第一个.

请参见http://gembundler.com/v1.3/man/gemfile.5.html#SOURCE-PRIORITY


* 编辑:按照马特的答案,取决于你想要做什么(或者什么宝石你加载)的顺序MIGHT重要.请参阅即使使用捆绑包,您的宝石订单也很重要.