プログラミング言語Crystal用のシンプルなWebfraemwork、Kemalを試しています。
その過程でコードの変更を自動で検知して再コンパイルして欲しくて方法を調べてみたのですが、いまいち公式(Crystal/Kemal)でそういった機能を見つけることが出来ませんでした。

そこで、Node.jsで動くnodemonを利用してみたら上手く言ったので備忘録として。

nodemonのインストール

私はYarnでインストールしました。

yarn global add nodemon

実行

後は、nodemon経由でcrystalコマンドを実行するだけです。

[koji:hello_kemal]$ ~/.yarn/bin/nodemon --exec "crystal run" src/hello_kemal.cr

ファイルの変更検知は本当に即座に検知されます。
ただし、Kemal、というかCrystal自体がコンパイルがちょっと遅いので、大体3秒ぐらいで変更が反映されるかな、という感じです。

そもそも機能の修正なんかを実際にアクセスして動作確認する、というやり方じゃなくて、ユニットテスト(spec)ベースでゴリゴリ開発していくべきものなので、本当はホットリロードする必要は無いと思いますが、あくまでKemalの学習時にControllerの書き方とかを調べる際には楽ちんだな、という感じです。