【Rails】sasscをインストール出来なかった備忘録

##環境
・M1
・ruby 2.6.5

##エラー内容
アプリの環境構築で、``bundle install``を実行したい際に、``gem sassc``ががインストール出来ないと出た。

```ターミナル.
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/Users/user/workspace/5890_58784_runteq_curriculum_advanced/vendor/bundle/ruby/2.6.0/gems/sassc-2.2.1/ext
/Users/user/.rbenv/versions/2.6.5/bin/ruby -I /Users/user/.rbenv/versions/2.6.5/lib/ruby/2.6.0 -r
./siteconf20220205-67436-1hdyypl.rb extconf.rb
creating Makefile

current directory: /Users/user/workspace/5890_58784_runteq_curriculum_advanced/vendor/bundle/ruby/2.6.0/gems/sassc-2.2.1/ext
make "DESTDIR=" clean

current directory: /Users/user/workspace/5890_58784_runteq_curriculum_advanced/vendor/bundle/ruby/2.6.0/gems/sassc-2.2.1/ext
make "DESTDIR="
compiling ./libsass/src/units.cpp
clang: error: the clang compiler does not support '-march=native'
make: *** [units.o] Error 1

make failed, exit code 2

--省略ーー

An error occurred while installing sassc (2.2.1), and Bundler cannot continue.

In Gemfile:
  bootstrap-sass was resolved to 3.4.1, which depends on
    sassc
```

エラー箇所は下記の場所で、M1macでは非対応らしい。
``clang: error: the clang compiler does not support '-march=native'``

``clang compiler``は``'-march=native'``をサポートしていないと出ているので、こいつを無視するように設定したら、インストールがうまく行く。

```
$ bundle config set --local build.sassc -- --disable-march-tune-native
You are replacing the current local value of build.sassc, which is currently "--use-system-libraries"
```

・**``bundle config``**
``Bundler``の設定システムと対話を出来るもの。
※``Bundler``は設定を、下記の優先順位に従って取得する。

1.ローカルのアプリケーション(app/.bundle/config)
2.環境変数
3.ユーザーのホームディレクトリ(~/.bundle/config)

・**``local``**
``--localオプション``をつけることで、ホームディレクトリ下ではなくプロジェクト単位の設定ファイルに設定を付与することができる。

・**``--disable-march-tune-native``**
``disable`` → 無効にする
``-march-tune-native``が``'-march=native'``のことを指していそう。

##余談：``bundle config``の使い方
現在バンドルされているの全ての``Bundler``設定と、 どこにそれが設定されたのかを示す一覧を出力する。

```
$ bundle config

Settings are listed in order of priority. The top value will be used.
build.sassc
Set for your local app (xxxxxxx): "--disable-march-tune-native"
Set for the current user (/Users/user/.bundle/config): "--disable-march-tune-native"

path
Set for your local app (xxxxxxx): "vendor/bundle"

sassc
Set for your local app (xxxxxxx): "-v 2.2.1 --use-system-libraries"
```

全bundleの設定を行う。現在のユーザーとして実行される全ての``bundle``の設定に対して、値を指定する。設定は、``~/.bundle/config``内に格納される。

```
$ bundle config [name] [value]

# 上記と同様の動作
$ bundle config --global [name] [value]

# ローカルで行う場合↓
$ bundle config --local [name] [value]
```

bundleの設定を削除。

```
$ bundle config --delete [name]
```

###ビルドオプション
``bundler``へフラグを指定することで、特定の``Gem``のインストールを行う度に、そのフラグを``gem``インストーラーに渡すことが出来る。
一般的な``Gem``である``mysql``の例いうと、 ``Snow Leopard(Mac OSXの)``ユーザーは、``mysql_config``の実行ファイルが見つけられる場所を、 設定フラグとして``gem install``に渡す必要がある。

```
# mysqlのGemのインストールをする際にフラグを渡す
$ gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

# このコマンド実行以降、渡したフラグに沿ってGemのインストールを実行する
$ bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
```

##参考記事
[Build Options](https://bundler.io/man/bundle-config.1.html#BUILD-OPTIONS)
[Bundlerでビルドオプションを指定する](https://qiita.com/aiandrox/items/f4215471f40325d69523)
[bundle configは使えるコマンド](https://qiita.com/ren0826jam/items/1a2131f8e0f6921a0b98)