[英]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.