Mac Catalinaにアップデートしたらsassが効かなくなった時

Mac Catalinaにアップデートしたらsassが効かなくなった時

突然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

参考にしたページ

css/sassカテゴリの最新記事

%d人のブロガーが「いいね」をつけました。