2011-09-20 53 views
1

我正在創建一個寶石,並設置我的Gemfile(Rails 3.0.9)從github下載最新的副本。經過多次的更新,我現在有一堆通過捆綁安裝了這些不同的版本,例如:如何清理捆綁銷售商購買github來源的舊寶石?

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

束EXEC寶石列表只顯示最新版本:

test_gem (0.3.2) 

束EXEC寶石卸載test_gem - v0.1.0拋出一個錯誤:

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

寶石列表-d test_gem顯示什麼

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

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

回答

3

讓我展示瞭如何在mysql2例如:

$ gem list mysql2 

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

我們可以先運行在空運行模式下的寶石清理,看看有什麼會被刪除:

$ gem cleanup -d 

Cleaning up installed gems…

...

Dry Run Mode: Would uninstall mysql2-0.2.6

Dry Run Mode: Would uninstall mysql2-0.2.7

Dry Run Mode: Would uninstall mysql2-0.3.2

Dry Run Mode: Would uninstall mysql2-0.3.6

...

Clean Up Complete

一旦我們對結果感到滿意,我們可以運行gem cleanup來實際重新運行移動舊的寶石:

$ gem cleanup -v 

如果你沒有看到在gem list -d test_gem*(通知*號)test_gem只是嘗試gem cleanup -d也許它會出現在其他的方式上市

- 人工 - 是最好的選擇!

0

捆紮機提供了一種方法,如果你一定要做到這一點:

bundle clean --force 

不推薦,因爲寶石可能在其它項目中使用。

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

rvm gemset empty