He configurado Rack::Reload
de acuerdo con esta threadRecarga Sinatra aplicación en cada petición en 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
Correr con fina mediante la thin start -R config.ru
, pero sólo se vuelve a cargar rutas recién añadidos. Cuando cambio la ruta ya existente, todavía ejecuta el código anterior.
Cuando agrego una nueva ruta, la vuelve a cargar correctamente, por lo que es accesible, pero no vuelve a cargar nada más.
Por ejemplo, si cambio de rutas a
get '/' do
'bar'
end
get '/foo' do
'baz'
end
Que /
que todavía sirven foo
, a pesar de que ha cambiado, pero /foo
gustaría recargar y servir baz
correctamente.
¿Es este comportamiento normal o me falta algo? Espero que todo el archivo fuente se vuelva a cargar. La única forma de pensar en este momento es reiniciar todo el servidor web cuando cambia el sistema de archivos.
estoy corriendo en Windows Vista x64, por lo que no se puede utilizar escopeta debido fork()
.
Lo siento, no vi su nota sobre Shotgun –