LoginSignup
12
6

More than 3 years have passed since last update.

rbenvのrubyコマンドがすべて「invalid option -: (-h will show valid options) (RuntimeError)」それRUBYOPTが原因かも

Posted at

はじめに

  • 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)

結論

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のせいだ。」:rage: 解決してみれば自分で設定した環境変数のせいだったという…:sweat_smile:

「エラーメッセージまるごと検索」に救われた

解決にいたった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の環境でもおなじことをしていたので再現しました。

12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6