tôi đã thiết lập Rack::Reload
theo này threadứng dụng Reloading Sinatra trên tất cả các yêu cầu trên 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
Chạy với mỏng qua thin start -R config.ru
, nhưng nó chỉ tải lại các tuyến đường mới được bổ sung. Khi tôi thay đổi tuyến đường hiện tại, nó vẫn chạy mã cũ.
Khi tôi thêm tuyến mới, nó tải lại chính xác nó, vì vậy nó có thể truy cập được, nhưng nó không tải lại bất cứ thứ gì khác.
Ví dụ, nếu tôi thay đổi tuyến đường đến
get '/' do
'bar'
end
get '/foo' do
'baz'
end
Thần /
vẫn sẽ phục vụ foo
, mặc dù nó đã thay đổi, nhưng /foo
sẽ tải lại một cách chính xác và phục vụ baz
.
Đây có phải là hành vi bình thường không, hoặc tôi đang thiếu thứ gì đó? Tôi mong đợi toàn bộ tệp nguồn sẽ được tải lại. Cách duy nhất xung quanh tôi có thể nghĩ ngay bây giờ là khởi động lại toàn bộ máy chủ web khi thay đổi hệ thống tập tin.
Tôi đang chạy trên Windows Vista x64, vì vậy tôi không thể sử dụng shotgun vì fork()
.
Rất tiếc, không thấy ghi chú của bạn về Shotgun –