これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の7日目の記事です。
Crystal を何の気無しに使っていると、気がつくと .crystal
というディレクトリがあちこちにできています。
Crystal はコンパイル時に .crystal
というディレクトリを作るためです。
Ruby でスクリプトを実行するときのように crystal hoge.cr
のように実行していても、実際にはコンパイルして実行しているので、やはり .crystal
が作られます。
% ls -a . .. hoge.cr % crystal hoge.cr % ls -a . .. .crystal hoge.cr
.crystal
はプログラムがどこのディレクトリに置いてあるかに関わらず、カレントディレクトリに作成されます。
カレントディレクトリにたまたま .crystal
というファイルがあったり、.crystal
ディレクトリをカレントディレクトリに作成するパーミッションがなければ、エラーになりコンパイルできません。
これはつらい。CRYSTAL_CACHE_DIR 環境変数を設定することで場所を固定化できるので、指定しておいた方が良いと思います。 自分は次のように $HOME の下に作るようにしています。
CRYSTAL_CACHE_DIR=$HOME/.crystal
追記 2016-05-14
Crystal 0.16 で、CRYSTAL_CACHE_DIR 環境変数を設定しなくても、デフォルトで $HOME の下にキャッシュディレクトリを作るようになりました。
$HOME/.cache/crystal
または $HOME/.crystal
が使用されます。