如何在捆绑器中清理旧的github来源的宝石?

时间:2011-09-20 15:04:48

标签: ruby-on-rails 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,但没有版本信息

我想我可以进去并手动删除这些条目,但我认为有更好的方法可以解决这个问题。

3 个答案:

答案 0 :(得分:3)

让我在mysql2上展示如何:

$ gem list mysql2
  

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

我们可以先在干运行模式下运行gem cleanup,看看会删除什么:

$ gem cleanup -d
  

清理已安装的宝石......

     

...

     

Dry Run Mode:将卸载mysql2-0.2.6

     

Dry Run Mode:将卸载mysql2-0.2.7

     

Dry Run Mode:将卸载mysql2-0.3.2

     

Dry Run Mode:将卸载mysql2-0.3.6

     

...

     

清理完成

一旦我们对结果感到满意,我们就可以运行gem cleanup来实际删除旧的gem:

$ gem cleanup -v

如果您未在gem list -d test_gem*中看到test_gem(请注意*符号),请尝试gem cleanup -d或许它会显示在该列表中

以其他方式 - 手动 - 是最好的选择!

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果您必须,Bundler提供了一种方法:

bundle clean --force

不建议这样做,因为宝石可能被其他项目使用。

其他选项是使用RVM gemsets,在这种情况下,您可以使用以下方法清除gemset:

rvm gemset empty