monk-glue-0.0.1
に含まれている Monk::Glue::Reloaderには微妙な
バグがあり、developmentモードでソースコードを更新したときに
自動リロードが上手くかからない事があるようです。
Rack::Reloaderの問題かと思っていたのですが、
調べてみると Monk::Glue::Reloader の処理に問題があることがわかりました。
reload!
メソッドを以下のように修正したところ正常に動作することが確認できました。
1 def reload!
2 expanded_loaded_features = $LOADED_FEATURES.map do |path|
3 File.expand_path(path)
4 end
5 hash = Hash[expanded_loaded_features.zip($LOADED_FEATURES)]
6 deletes = []
7 files.each do |file|
8 if path = hash[File.expand_path(file)]
9 $LOADED_FEATURES.delete(path)
10 end
11 end
$LOADED_FEATURES
に絶対パスと相対パスが混在していることがあるようで、
その場合にうまく処理できていないようでした。
$LOADED_FEATURESは全て絶対パスで保持するようにしたほうが良い気がします。