Compassのimport-onceでエラー。コンパイル時に「No such file or directory」が出る場合の解決方法

  • 更新日:
  • 公開日:

Compassのコンパイル速度を向上させる効果のあるimport-onceですが、とある状況下(自分のOSはWindows 7やWindows 10)でコンパイルをすると以下の様なエラーを吐き出します。

error scss/main.scss (C:/Ruby200-x64/lib/ruby/2.0.0/tempfile.rb:146:in `initialize': No such file or directory - (キャッシュディレクトリ)/.sass-cache/75fcaf1b4852ceb732871195e41567cc2a7d8997/C%058/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/_support.scssc20150819-9284-1y0fed4)

これ、何が原因かというと、どうやらディレクトリ階層が深すぎる場合にキャッシュファイルが生成できなくなっているようなんです。

Macでは確認していませんが、例えばWindowsだったらあまりにもディレクトリ階層が深いとファイルの削除が出来なかったり、名前の変更が出来なかったりするんですよね。憶測ですが、多分これに近いOSレベルの問題なのかもしれません。

(2015年8月現在、import-onceのバージョンは1.0.5です)

解決方法

海外のフォーラムでも同じ現象について書かれていて、そこに解決方法がありました。方法は至って簡単です。

Compassの設定を書いているconfig.rbに以下の記述をします。

cache = true
cache_path = 'C:/temp/sass/'

「cache_path」に指定しているフォルダ名やドライブ名は任意のものに変更できます。例えば「’D:/temp/sass/’」とか。ドライブのほぼ直下ならディレクトリ階層が深くなりすぎず、ちゃんとキャッシュファイルも生成されるんですね。

参考になったフォーラムはこちらです:

compass-import-once causes `compass compile` to fail on Windows since 1.0.4 · Issue #1642 · Compass/compass

書いた人

Symbol Mark

Ryoichi(しつ)

除菌ティッシュを買い込んで使いきれずによく乾かす人。

療養目的で退職し、どうやって生きていくか模索中。最近は勉強目的でLaravelやVue.js弄ったり、趣味で音で遊んでます。

※2019年10月16日現在ブログリニューアル中です。崩れなどが発生していたらすみません。

うぇぶ: @s_ryone