ruby – 在Windows上的每个请求中重新加载Sinatra应用程序
发布时间:2020-12-16 19:33:23 所属栏目:百科 来源:网络整理
导读:我根据这个 thread建立了Rack :: Reload # config.rurequire 'rubygems'require 'sinatra'set :environment,:developmentrequire 'app'run Sinatra::Application# app.rb class Sinatra::Reloader Rack::Reloader def safe_load(file,mtime,stderr = $stderr
我根据这个
thread建立了Rack :: Reload
# 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 运行瘦瘦的启动-R config.ru,但它只重新加载新添加的路线.当我更改现有路由时,它仍然运行旧代码. 当我添加新路由时,它会正确地重新加载它,因此它是可访问的,但它不会重新加载任何其他内容. 例如,如果我将路线更改为 get '/' do 'bar' end get '/foo' do 'baz' end 虽然它已经改变了,但是/仍然会服务foo,但是/ foo会正确地重新加载并服务baz. 这是正常的行为,还是我错过了什么?我希望重新加载整个源文件.我现在想到的唯一方法是在文件系统更改时重新启动整个Web服务器. 我在Windows Vista x64上运行,因此我不能因为fork()而使用霰弹枪. 解决方法
您可以尝试使用
sinatra-reloader,这在Windows上运行良好(同样,它比霰弹枪更快).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |