每一个请求重新加载西纳特拉应用,我根据这个thread在Windows上
# config.ru
require 'rubygems'
require 'sinatra'
set :environment, :development
require 'app'
run Sinatra::Application
# app.rb
class Sinatra::Reloader < Rack::Reloader
def safe_load(file, mtime, stderr = $stderr)
if file == Sinatra::Application.app_file
::Sinatra::Application.reset!
stderr.puts "#{self.class}: reseting routes"
end
super
end
end
configure(:development) { use Sinatra::Reloader }
get '/' do
'foo'
end
通过thin start -R config.ru
薄运行设置Rack::Reload
,但它只是重新加载新添加的路由。当我改变已经存在的路线时,它仍然运行旧的代码。
当我添加新路由时,它正确地重新加载它,因此它是可访问的,但它不会重新加载其他任何东西。
例如,如果我改变路线
get '/' do
'bar'
end
get '/foo' do
'baz'
end
比/
仍将担任foo
,即使它已经改变了,但/foo
会正确地重新加载和服务baz
。
这是正常行为,还是我错过了什么?我期望整个源文件被重新加载。我现在唯一能想到的就是在文件系统发生变化时重新启动整个网络服务器。
我在Windows Vista x64上运行,所以我不能使用霰弹枪,因为fork()
。
对不起,没有看到你关于Shotgun的说明 – 2009-12-17 20:53:41