簡體   English   中英

如何在捆綁器中清理舊的github來源的寶石?

[英]How do I clean up old github-sourced gems in bundler?

我正在開發一個gem並設置我的Gemfile(Rails 3.0.9)從github下載最新的副本。 經過幾次更新后,我現在通過bundler安裝了一堆這些不同的版本,例如:

/Users/jseidel/.rvm/gems/ruby-1.9.2-p180/gems/test_gem-0.0.1/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-073530fbb227/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-19ca852f2dbc/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-1c54d091fa69/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-2a792620be0e/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-3dc70da90fcb/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-4bb5ca8c3fb5/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-6587eb65715f/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-6e58646ce11d/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-725511907cc1/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-7bc40a7293aa/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-7fceecaf1539/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-9ca2049c33f0/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-b63e6a695990/lib/test_gem.rb
/Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test_gem-be3cfbdd01a2/lib/test_gem.rb

bundle exec gem list只顯示最新版本:

test_gem (0.3.2)

bundle exec gem uninstall test_gem -v0.1.0拋出一個錯誤:

ERROR:  While executing gem ... (Gem::InstallError)
    cannot uninstall, check `gem list -d test_gem`

gem list -d test_gem什么都沒顯示

bundle exec gem list -d test_gem確實顯示了我的gem,但沒有版本信息

我想我可以進去並手動刪除這些條目,但我認為有更好的方法來處理這個問題。

讓我展示一下mysql2的例子如何:

$ gem list mysql2

mysql2(0.3.7,0.3.6,0.3.2,0.2.7,0.2.6)

我們可以先在干運行模式下運行gem清理,看看會刪除什么:

$ gem cleanup -d

清理已安裝的寶石......

...

干運行模式:將卸載mysql2-0.2.6

干運行模式:將卸載mysql2-0.2.7

干運行模式:將卸載mysql2-0.3.2

干運行模式:將卸載mysql2-0.3.6

...

清理完成

一旦我們對結果感到滿意,我們就可以運行gem cleanup來實際刪除舊的gem:

$ gem cleanup -v

如果你沒有在gem list -d test_gem*看到test_gem gem list -d test_gem* (注意*符號),請嘗試gem cleanup -d它可能會出現在該列表中

以其他方式 - 手動 - 是最好的選擇!

(sudo) rm -rf /Users/jseidel/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/test*

如果您必須,Bundler提供了一種方法:

bundle clean --force

不建議這樣做,因為寶石可能被其他項目使用。

其他選項是使用RVM gemsets,在這種情況下,您可以清除寶石集:

rvm gemset empty

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM