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/’」とか。ドライブのほぼ直下ならディレクトリ階層が深くなりすぎず、ちゃんとキャッシュファイルも生成されるんですね。
参考になったフォーラムはこちらです: