はじめに
- Rubymin+rbenv+ruby2.7の環境で使っていた
- ruby2.6.3にスイッチして作業しようとしたらRubymineで 「No Rails found in SDK」 エラーがでるようになった
- Rubymineの設定を探っていたが、
ruby -v
が失敗していることに気付く - 別のバージョンなら?
2.6.5
,2.5.7
をインストールしたがすべてNG -
2.7.0
に戻すと正常に動作する
エラー内容
$ ruby -v
Traceback (most recent call last):
/Users/ueki/.rbenv/versions/2.6.4/bin/ruby: invalid option -: (-h will show valid options) (RuntimeError)
結論
-
.bashrc
に書いているRUBYOPT
を削除しよう - Switching back to ruby 2.6 after installing / using 2.7 - strange ruby errors · Issue #154 · asdf-vm/asdf-ruby
RUBYOPTを削除する
bashなら
unset RUBYOPT
fish_shellなら
set - e RUBYOPT
原因
Ruby 2.7の警告を抑制するために、.bashrc (.zshrc / config.fish)にRUBYOPT
を設定していたことが原因でした。
.bashrc
export RUBYOPT='-W:no-deprecated -W:no-experimental'
おわりに
しらべているときは「macOS Catalinaのせいだ、rbenvのせいだ。」 解決してみれば自分で設定した環境変数のせいだったという…
「エラーメッセージまるごと検索」に救われた
解決にいたったSwitching back to ruby 2.6 after installing / using 2.7 - strange ruby errors · Issue #154 · asdf-vm/asdf-rubyにたどり着けたのは、エラーメッセージをまるごと貼り付けて検索した からでした。
決め手の検索キーワード
「"invalid option -: (-h will show valid options) "
」
このとき、ダブルクォーテーションで囲んでおくのが大事です!(囲まないと文字列の-
や半角スペースが検索のクエリとして扱われてしまうためです)
※ちなみに Windows10 + WSL2の環境でもおなじことをしていたので再現しました。