sinatraで自動リロードが動かん??、、、、 (sinatra0.9.2 reload problem)
0.9からrackベースのリロードに移行したのかな??
なんか色々とこなれてない感じがする。まぁしっかり調べていないので??が多いけど、まぁそれは置いておいて
このあたりでいろいろやっているのを参考にしてみた。
Sinatra::Application.app_file にフルパスを突っ込めるならばSinatra::Reloaderでコメントアウトしている部分を外してもOKなんだけど、、、なんだか突っ込むことが出来ない(起動チェック的なものがあるんだろうなぁ)。仕方ないので、ざっくりどんなファイルが更新されようが自動リロードということでいってみる。自動リロードがない開発なんて考えられないし。。。
require 'rubygems' require 'sinatra' require 'logger' # # http://groups.google.com/group/sinatrarb/browse_thread/thread/a5cfc2b77a013a86/640ebd95b4543064?lnk=gst&q=reload#640ebd95b4543064 # class Sinatra::Reloader < Rack::Reloader def safe_load(file, mtime, stderr = $stderr) puts "Sinatra::Reloader#safe_load called" #if file == Sinatra::Application.app_file ::Sinatra::Application.reset! stderr.puts "#{self.class}: reseting routes" #end super end end set :app_file, __FILE__ set :reload, true configure :development do use Sinatra::Reloader,1 end get "/" do "just a hello #{Time.now}" end
リロードが一応動くようにはなった
が、、、あるシチュエーションだとやっぱリロードがかからない。具体的には
1.ソース更新
↓
2.ブラウザで確認(更新されている!!!)
↓
3.ソース更新
↓
4.ブラウザで確認(更新されてない(´・ω・`) )
ソースを追いかけてみるとからくりは簡単??だけど、文面で説明するのは大変なんでやめます。2のブラウザで確認を二回アクセスすれば問題は発生しません。