2013-02-24 66 views

回答

1

據我所見,你不能指示捆綁器在更新時只保留最新版本。您可以刪除所有寶石的所有舊版本一氣呵成:

bundle exec gem cleanup 

(Reference)

+0

清理結束時出現以下錯誤。無法卸載bundler-1.2.3: \t Gem :: InstallError:未安裝gem「bundler」 清理完成 – Sam 2013-02-24 13:23:32

+0

gem cleanup似乎刪除舊版本,但如果我對遠程機器執行「cap deploy」 。我如何以自動化的方式去除這個問題,捆綁器本身可以做到這一點 – Sam 2013-02-24 13:24:34

+0

正如我所說:我不這麼認爲。你不能編輯你的deploy.rb文件,以便它運行'gem cleanup'? – Mischa 2013-02-24 13:26:12

1

您可以通過將該版本放在gem文件中來指示捆綁器使用一個版本。有時候,我和rake有衝突,儘管我沒有明確地在我的Gemfile中使用rake,所以我必須把rake版本放在我的Gemfile的頂部,這些版本可以被所有其他gem使用。

如果你的問題是你曾經使用獨角獸4.5.0,現在它已經安裝了獨角獸4.6.1在你當地的寶石來源,你可以告訴寶石卸載你不再需要的版本。

gem uninstall unicorn --version 4.5.0 

如果你做了一個捆綁--deployment和填充供應商/ bundle目錄,這是您要刪除的寶石,然後我通常只是刪除寶石目錄,但是,我想你可以運行與路徑捆綁,如下所示:

bundle --deployment --path vendor/bundle 
gem uninstall unicorn --version 4.5.0 

當您運行捆綁器時,它會記住設置。我痛苦地發現了這個 - 沒有開關。 --path設置將告訴gem使用本地vendor/bundle目錄作爲你的本地gem源碼。請記住通過再次運行包來重新設置路徑。

+0

我不想指定版本,因爲在接下來的升級,我想移動到更高版。我該如何實現自動化? – Sam 2013-02-24 13:20:54

+0

@Sam,你可以用'gem cleanup'刪除所有寶石的所有舊版本。請參閱下面的答案。 – Mischa 2013-02-24 13:22:33

+0

您可以在Gemfile中將最小版本指定爲4.6.1,使用> =。 – 2013-02-24 13:23:03