
突然ruby sassが効かない・・・
$ sass >>> /usr/local/bin/sass: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: bad interpreter: No such file or directory
bad interpreterって何やねん。
ここで色々調べてみると、1.Xコードをアップデート 2.Rubyを再インストール 3.sassを再インストールの手順で解決しているパターンが多かったですが、自分はXコード自体入れてなかったので、別パターンで解決しました。
原因はRubyのバージョンがCatalinaにアップデートしたことで変更されたので、それに伴うエラーらしい。
ただMacに標準で入ってるRubyをいじるのは良くないらしい。(ソース:stackoverflow)なので、rbenvというRubyのパッケージ管理ツール?を使って別枠でバージョンの新しいRubyをインストールして、そちらをPC内で適用するという流れになっております。
rbenv入れる
まずRubyの現在のバージョンを確認
$ ruby -v ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]
で下記を実行
$ brew install rbenv ruby-build
ここで下記エラーが出たら、
==> Summary 🍺 /usr/local/Cellar/readline/8.0.1: 48 files, 1.5MB ==> Installing ruby-build xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun Error: An exception occurred within a child process: CompilerSelectionError: ruby-build cannot be built with any available compilers. Install GNU's GCC: brew install gcc
指示通りに以下を叩く
$ brew install gcc
それでもエラーが出る場合は以下をたたく。
たたくと下記の表示とダイアログが出るので、OKでインストールを完了させる。
$ xcode-select --install xcode-select: note: install requested for command line developer tools
再度、気を取り直して
$ brew install gcc
rubyのインストール
install
後のバージョンはそれぞれ確認しましょう。
$ rbenv install 2.7.0
実行した後
下記の様なエラーが出たら、
$ rbenv install 2.7.0 Downloading openssl-1.1.1d.tar.gz... -> https://dqw8nmjcqpjn7.cloudfront.net/1e3a91bc1f9dfce01af26026f856e064eab4c8ee0a8f457b5ae30b40b8b711f2 Installing openssl-1.1.1d... BUILD FAILED (OS X 10.15.3 using ruby-build 20200224) Inspect or clean up the working tree at /var/folders/s4/6_9qvyzn6kvcd2lz2jm3y_fw0000gq/T/ruby-build.20200303110227.33296.Nfnu5g Results logged to /var/folders/s4/6_9qvyzn6kvcd2lz2jm3y_fw0000gq/T/ruby-build.20200303110227.33296.log Last 10 log lines: include/openssl/crypto.h:341:33: error: unknown type name 'time_t'; did you mean 'size_t'? struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result); ^~~~~~ size_t /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h:31:32: note: 'size_t' declared here typedef __darwin_size_t size_t; ^ 1 error generated. make[1]: *** [apps/app_rand.o] Error 1 make: *** [all] Error 2
下記を順番に実行
$ brew install openssl $ export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)"
からの再度挑戦
$ rbenv install 2.7.0
バージョン切り替え
インストール出来たら、バージョンを確認して、切り替えます。
まず確認。アスタリスクがついてる行(初期だとsystem)が現在適用されているruby。
なので、これを先程インストールしたバージョンに変更してあげます。
$ rbenv versions * system 2.7.0 (set by /Users/username/.rbenv/version)
下をたたいて適用
$ rbenv global 2.7.0
更にこちらも確認
$ ruby -v ruby 2.7.0p114 (2019-10-01 revision 67812) [x86_64-darwin19]
上記でまだ古いままだと、rbenvのパスが通ってないので、.bashrcに変更を加えます。
普通はuser直下のホームディレクトリにあるらしいのですが、ない場合は新規作成して、
下記を追加
[[ -d ~/.rbenv ]] && \ export PATH=${HOME}/.rbenv/bin:${PATH} && \ eval "$(rbenv init -)"
からの設定ファイルを読み込ませる
$ source ~/.bashrc
パスを確認
$whichして確認する
ダメなパターン $ which ruby /usr/bin/ruby $ which gem /usr/bin/gem
OKなパターン $ which ruby /Users/hoge/.rbenv/shims/ruby $ which gem /Users/hoge/.rbenv/shims/gem