Rubyのgemを全てアンインストールする

photo credit: gremionis via photopin cc

Rubyのインストールしたgemをすべて削除したい場合がある。例えば、bundle install --pathを指定していなかった場合などだ。単純にgem uninstallを実行すると、

$ gem uninstall
ERROR:  While executing gem ... (Gem::CommandLineError)
    Please specify at least one gem name (e.g. gem build GEMNAME)

というようにgemの名前を指定していないのでエラーが出てしまう。じゃぁ、指定してやればいいんだろ!と以下を実行すると、

$ gem uninstall -axI `gem list --no-versions`
Successfully uninstalled uglifier-2.5.3
Successfully uninstalled turbolinks-2.4.0
ERROR:  While executing gem ... (Gem::InstallError)
    gem "test-unit" cannot be uninstalled because it is a default gem

というようにdefault gemを消そうとしているのでエラーが出てしまう。じゃぁ、default gem以外指定してやればいいんだろ!と以下を実行するとすべて削除できる。

$ gem uninstall -axI `gem list --no-versions | egrep -v 'test-unit|rdoc|psych|minitest|io-console|rake|bigdecimal|json'`

参考資料