余計なgemをVSCodeとbashでまとめて削除する
gem listを実行すると、以下のようにずらっと出てくる。
$ gem list *** LOCAL GEMS *** actioncable (5.2.0, 5.1.4, 5.1.2, 5.0.6) actionmailer (5.2.0, 5.1.4, 5.1.2, 5.0.6, 4.2.5) actionpack (5.2.0, 5.1.4, 5.1.2, 5.0.6, 4.2.5) actionview (5.2.0, 5.1.4, 5.1.2, 5.0.6, 4.2.5) activejob (5.2.0, 5.1.4, 5.1.2, 5.0.6, 4.2.5) activemodel (5.2.0, 5.1.4, 5.1.2, 5.0.6, 4.2.5) ...
結果をコピペしていらないやつだけにしてgemList.txtで保存。 このとき表示されるバージョン一覧[ex). (5.2.0, 5.1.4, 5.1.2, 5.0.6)]が、gem uninstall GEMNAMEするときに不要なのでVSCodeを使って消す。 正規表現で"/ (.+)/" -> ""に置き換えれば済む。VSCodeがなかったらrubyとかでさくっと処理。
File.foreach('gemList.txt') do |line| puts line..gsub!(/ (.+)/, "") end
あとはbashでgem uninstall -aIx GEMNAMEを実行するファイルを書く。ここで-aIxオプションをつけておく。
-a, --[no-]all Uninstall all matching versions -I, --[no-]ignore-dependencies Ignore dependency requirements while uninstalling -D, --[no-]-check-development Check development dependencies while uninstalling (default: false) -x, --[no-]executables Uninstall applicable executables without confirmation
cat gemList.txt | while read line do sudo gem uninstall -aIx $line done
疑問
試してないけど、もしかしたら途中のreplace処理いらないかもしれない。