2016-09-21 106 views
1

當我第一次在項目的Gemfile中添加一個gem,但是之前在另一個項目上安裝了gem時,它使用現有版本的寶石,而不是最新版本的寶石可用。如何安裝gemfile.lock中未提及的最新版本的gemfile.lock

例如,使用捆綁版本1.11.2,我添加gem 'rubocop'到項目的Gemfile和運行bundle install使用RuboCop版本0.42.0,而不是0.44目前(截至2016年10月21日)的版本導致了它。 1:

rubocop (0.42.0) 
    parser (>= 2.3.1.1, < 3.0) 
    powerpack (~> 0.1) 
    rainbow (>= 1.99.1, < 3.0) 
    ruby-progressbar (~> 1.7) 
    unicode-display_width (~> 1.0, >= 1.0.1) 

運行bundle update rubocop導致0.44.1版本被使用,而無需他們的版本更改的任何預先存在的寶石。這表明從使用RuboCop 0.44.1版本購買我沒有任何限制。

rubocop (0.44.1) 
    parser (>= 2.3.1.1, < 3.0) 
    powerpack (~> 0.1) 
    rainbow (>= 1.99.1, < 3.0) 
    ruby-progressbar (~> 1.7) 
    unicode-display_width (~> 1.0, >= 1.0.1) 

當運行bundle install,我怎麼能告訴它,對於未在Gemfile.lock提到寶石,下載寶石的最新兼容版本,而不是使用這恰好是可在舊版本本地機器?

我試着看着http://bundler.io/v1.13/man/bundle-install.1.html,但沒有看到任何相關的東西。

+0

你是什麼意思「在lockfile中沒有提到」?如果它不在lockfile中,那麼它不是gemfile中的gem或它們的一個依賴項,因此bundle與它無關。 –

+0

@SergioTulentsev當我剛剛爲gemfile添加了一個gem,並且還沒有運行'bundle install',它會在'Gemfile.lock'中列出gem。 –

+0

您確定bundler不安裝最新版本?我認爲它確實如此。 –

回答

0

如果你想擁有最新版本的寶石,刪除版本Gemfile並再次運行bundle install

+0

我已經爲我的問題添加了一個示例複製,這表明此方法無效,至少對於我使用的捆綁軟件的版本而言。 –