RubyMine の Terminal で fish と asdf を使ったときに遭遇したエラー
はじめに
RubyMine の Terminal で fish と asdf を使おうとしたら、以下のエラーになったので、その対処法を書きます。
1
2
3
4
5
6
7
/Applications/RubyMine.app/Contents/plugins/ruby/rb/terminal/asdf_starter.sh (line 1): Unsupported use of '='. In fish, please use 'set asdf_bin_root $(dirname $RUBY_VERSION_MANAGER_PATH)'.
asdf_bin_root=$(dirname $RUBY_VERSION_MANAGER_PATH)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
from sourcing file /Applications/RubyMine.app/Contents/plugins/ruby/rb/terminal/asdf_starter.sh
called on line 2 of file /Applications/RubyMine.app/Contents/plugins/terminal/shell-integrations/fish/fish-integration.fish
from sourcing file /Applications/RubyMine.app/Contents/plugins/terminal/shell-integrations/fish/fish-integration.fish
source: Error while reading file '/Applications/RubyMine.app/Contents/plugins/ruby/rb/terminal/asdf_starter.sh'
前提
エラーが発生する条件
- RubyMine の Terminal で、fish を使うように変更
- RubyMine 上で
Ruby SDK and gems
で asdf を使うように指定 - RubyMine の Terminal を開いたときに、上記のエラーが発生
解決方法
エラー文に記載されている /Applications/RubyMine.app/Contents/plugins/ruby/rb/terminal/asdf_starter.sh
を以下のように変更しました。
1
2
3
4
5
-asdf_bin_root=$(dirname $RUBY_VERSION_MANAGER_PATH)
+set asdf_bin_root $(dirname $RUBY_VERSION_MANAGER_PATH)
-source "$asdf_bin_root/../asdf.sh"
+source "$asdf_bin_root/../asdf.fish"
asdf shell ruby $RUBY_VERSION_MANAGER_DISTRIBUTION_ID
結局、asdf_starter.sh
は fish の記法に従っていなかったため、エラーが発生していました。同じ理屈で asdf.sh
ではなく、 asdf.fish
を読み込むように変更する必要がありました。
This post is licensed under CC BY 4.0 by the author.