ho creato Rack::Reload
secondo questo threadRicarica Sinatra applicazione su ogni richiesta su 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
Correndo con sottile tramite thin start -R config.ru
, ma ricarica solo percorsi appena aggiunti. Quando cambio rotta già esistente, esegue ancora il vecchio codice.
Quando aggiungo nuova rotta, ricaricata correttamente, in modo che sia accessibile, ma non ricarica niente altro.
Per esempio, se ho cambiato rotte per
get '/' do
'bar'
end
get '/foo' do
'baz'
end
Than /
sarebbe ancora servire foo
, anche se è cambiato, ma /foo
sarebbe correttamente ricaricare e servire baz
.
È normale, o mi sto perdendo qualcosa? Mi aspetto che tutto il file sorgente venga ricaricato. L'unico modo in cui posso pensare al momento è il riavvio dell'intero webserver quando il filesystem cambia.
Sono in esecuzione su Windows Vista x64, quindi non posso usare fucile a causa di fork()
.
Spiacente, non ho visto la tua nota su Shotgun –