sinatraで自動リロードが動かん??、、、、 (sinatra0.9.2 reload problem)

0.9からrackベースのリロードに移行したのかな??

なんか色々とこなれてない感じがする。まぁしっかり調べていないので??が多いけど、まぁそれは置いておいて

http://groups.google.com/group/sinatrarb/browse_thread/thread/a5cfc2b77a013a86/640ebd95b4543064?lnk=gst&q=reload#640ebd95b4543064

このあたりでいろいろやっているのを参考にしてみた。

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のブラウザで確認を二回アクセスすれば問題は発生しません。