1. トップページ
  2. macOS Catalina に Compassをインストールしようとしたら詰まった件

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ファイルが更新された際にコンパイルが行われるようになりました。

参考にさせていただいたページ