もともとSinatraではRack::Reloaderが上手く機能しないのでshotgunを使おうという流れだったのですが、諸般の事情でshotgunを使えない状況になったため、本腰を入れてRack::Reloaderを使えるようにする方法を調べました。
結論として、以下のようにすれば使えました。
config.ru
ruby>>
configure :development do
class Sinatra::Reloader < Rack::Reloader
def safe_load(file, mtime, stderr = $stderr)
::Sinatra::Application.reset!
use_in_file_templates! file
stderr.puts "#{self.class}: reseting routes"
super
end
end
use Sinatra::Reloader
end
<<--
reset!を呼び出した後use_in_file_templates!を呼ぶ事で、in-fileテンプレートをもう一度読み込んでいます。
posted by
genki on Mon 12 Oct 2009 at 02:26 with 0 comments