[ruby,rails]gemのバージョンのdefault設定解除方法
1.エラーの例
$gem uninstall railties -v '6.0.2.1' #アンインストールコマンドです
~中略~
gem "railties" cannot be uninstalled because it is a default gem #エラー文
$gem uninstall railties -v '6.0.2.1' #アンインストールコマンドです
~中略~
gem "railties" cannot be uninstalled because it is a default gem #エラー文
railsやその周辺のgemをダウングレードするべく、最新のgemに対し上記のアンインストールコマンドを打ったところその下のようにエラー文をだしました。そのエラー解決についてあまりネット上に記載がなかったので、解決方法を記載します
※railsなどのgemのバージョンを下げるには"インストールされている最新のgemのバージョン=反映させたいgemバージョン"とするため、必要なバージョン以上の全てのバージョンをアンインストールする必要があります
2.エラーの原因
コマンドの意味をよく調べずにgem update --default
というコマンドを打ったところ、local( /Users/kontatomoya/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0)のgemの最新バージョンが一度にインストールされ、かつ最新バージョンがデフォルトに設定されてしまったのが原因でした
# (gem update --default コマンド入力後)
$ gem list #projectのGemfileにあるgemで使用可能な(もともとpcにinstallされている)gemのバージョンを調べるコマンドです。
(localのどこで打っても同じものが出てきます)
〜前略〜
rails (default: 6.0.2.1, 5.2.4.1) #このdefault:と付いているバージョンはdefault設定を解除しないとアンインストールすることができません
rails-controller-testing (1.0.4)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.3.0)
railties (default: 6.0.2.1, 5.2.4.1) #上記と同じです
〜後略〜
3.解決方法
下記の順にコマンドを打っていただければdefaultを解決できます
$ gem environment #gemのインストール先のパスを確認します
RubyGems Environment:
- RUBYGEMS VERSION: 2.7.6
- RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-darwin18]
- INSTALLATION DIRECTORY: /Users/kontatomoya/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
#↑この行でgemのインストール先のパスを確認します
〜後略〜
$ cd #ホームディレクトリへ移動
$ cd /Users/kontatomoya/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
#上記で確認したパスに移動します(今回は筆者のディレクトリで記述します)
$ ls #中を確認します
build_info doc gems
cache extensions specifications ←この中にdefault設定が記述されています
$ rm -rf specifications/default/
#specificationsのなかのdefaultディレクトリ削除します(これでdefaultが解除されます)
$ gem list #defaultが解除されているのを確認します
〜前略〜
rails (6.0.2.1, 5.2.4.1) #defaultが解除されているのが確認できます
rails-controller-testing (1.0.4)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.3.0)
railties (6.0.2.1, 5.2.4.1) #defaultが解除されているのが確認できます
〜後略〜
4.(補足)ダウングレード
1~3が終わった状態で下記のコマンドを打つことでダウングレードすることができます(当初の目的がダウングレードだったので忘れずに行いましょう)
$gem uninstall railties -v '6.0.2.1'
$gem uninstall rails -v '6.0.2.1'
$ gem list
〜前略〜
rails (5.2.4.1) #6.0.2.1が削除されているのが確認できます
rails-controller-testing (1.0.4)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.3.0)
railties (5.2.4.1) #6.0.2.1が削除されているのが確認できます
〜後略〜
5.注意点
default値を消すことができないことに焦ってgem uninstall -I -a -x --user-install --force
(クリーンアップ(強制削除))をしてしまわないようにしましょう。このコマンドでもdefault値は消せず、gemの最新バージョン以外の全てのバージョンと、初期から入っていない全てのgemが削除されます。筆者は焦ってこのコマンドを打ってしまい、macのタイムマシーンで元に戻すことにしました。バックアップしてない人は手詰まり(元のバージョンとすることができない状態。最新バージョンならgem install bundler
などで必要なものだけのインストールはできますが...)になってしまうので注意しましょう。
6.参考
bundled gem と default gem の違い
https://blog.n-z.jp/blog/2016-09-10-bundled-gem-and-default-gem.html
Author And Source
この問題について([ruby,rails]gemのバージョンのdefault設定解除方法), 我々は、より多くの情報をここで見つけました https://qiita.com/KONTA2019/items/1d2fc90b5020486b0504著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .