macOS Catalina に Compassをインストールしようとしたら詰まった件
macOS Catalina に CSSフレームワーク Compass をインストールしようとしたところ、
想像以上に手間取ってしまいました。
解決方法について日本語での情報がなかったため、まとめて記事として投稿することにしました。
Compassとは
Compass は CSSフレームワークです。
SCSSと併用することで利用可能で、ベンダープレフィックスの自動付与、
CSSスプライトの自動作成など便利な機能がたくさん実装されています。
Compass Home | Compass Documentation
2009年に作られたフレームワークであり、CSS3が普及し始めた頃にはよく使われていたようですが、
時代が進み、ブラウザの進化・より高機能な代替ソフトが開発された結果、
利用される機会がどんどん減り、2016年に開発が停止したという過去があります。
Compass の送別会 - ペパボテックブログ
検証環境
以下の環境で検証をおこないました。
macOS Catalina 10.15.7
発生した問題
Compass は gem形式 で提供されているため、Ruby を使用します。
macOS ビルトインの Ruby では gem のアップデートやインストールに失敗してしまいました。
公式サイトのインストール手順ページに沿って作業を進めました。
Install the Compass Stylesheet Authoring Framework | Compass Documentation
まずは gemコマンド で Compass のインストールを試みます。
gem install compass
以下のようなエラー文が出力されました。
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
エラー文的にパーミションの問題であると判断したため、
sudo をつけてコマンドを実行してみました。
sudo gem install compass
今度は別のエラーによりインストールが完了しませんでした。
ERROR: Error installing compass:
ERROR: Failed to build gem native extension.
解決方法
手詰まり状態となったため、Googleで解決方法について調査したところ、
StackOverflowに解決方法が紹介されていました。
How do I install ruby gems on Mac
ビルトインの ruby を使用していることが原因なので、
rbenv 経由の ruby を使用してこの問題を回避します。
作業内容としては、Homebrew経由 で ruby をインストールしてパスを通し、
その後 rbenv をインストールし、rbenv を経由した ruby で gem のインストールを行います。
直接的な問題解決ではありませんが、Compass の使用が目的であるため、
あまり時間をかけるべき作業ではないと判断し、StackOverflowの手法に従いました。
rbenvとは
rubyのバージョン管理ができるソフトウェアです。
node.js 用に開発された nodenv など言語ごとに存在しています。
作業手順
1から順に実行してください。
1. brewパッケージのアップデート
brew update
2. ruby を homebrew でインストール
brew install ruby
# bash を使用している場合
echo 'export PATH=/usr/local/Cellar/ruby/(インストールされたバージョンを入力)/bin:$PATH' >> ~/.bash_profile
# パスの追加後、ターミナルに設定を反映する
source ~/.bash_profile
3. rbenv と ruby-build を homebrew でインストール
brew install rbenv ruby-build
# bash を使用している場合
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# パスの追加後、ターミナルに設定を反映する
source ~/.bash_profile
4. rbenv でインストール可能な ruby のバージョンをリストアップ
rbenv install -l
5. ruby 2.4.1 をインストール
rbenv install 2.4.1
# 特定のディレクトリで使用する ruby のバージョンを指定
rbenv local 2.4.1
# システム全体で使用する ruby のバージョンを指定
rbenv global 2.4.1
6. rbenv にインストールした ruby を認識させる
rbenv rehash
rbenv を経由した ruby では gem のアップデートやインストールが問題なく実行できました。
Compass をインストールしてみます。
1. gem のアップデート
gem update --system
2. conpass をインストール
gem install compass
インストールも正常に完了したため、Compassを使用してSCSSのコンパイルを実行してみます。
プロジェクトのルートディレクトリに config.rb
を作成し、以下のように記述します。
http_path = "/"
css_dir = "css"
sass_dir = "css"
images_dir = "images"
javascripts_dir = "js"
output_style = :expanded
relative_assets = true
line_comments = false
SCSSファイルに以下の文を記述します。
@import 'compass/css3/';
ターミナルで以下のコマンドを実行します。
compass w
これでSCSSファイルが更新された際にコンパイルが行われるようになりました。