考虑这个config.ru文件:
require 'sinatra'
use Rack::Reloader, 0
get '/' do
'hi'
end
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)
我从命令行启动它thin start。hi当我点击 时,应用程序会运行并显示localhost:3000。如果我现在更改hi为hello,保存文件并重新加载页面,则不会出现更改:页面仍然显示hi。
为什么Rack::Reloader在这种情况下不起作用?我可以更改任何内容以使其正常工作吗?
请参阅此处了解所发生情况的详细说明。本质上,每次您的文件发生更改时,Rack::Reloader都会重新需要它。
不幸的是,对于 Sinatra,如果您第二次重新定义路线(这就是您重新要求时发生的情况),sinatra 会忽略新定义,因为get '/' do end已经定义了!
您需要做的就是重置您定义的所有路线:
# inside app.rb
require 'sinatra'
require 'rack'
configure :development do
Sinatra::Application.reset!
use Rack::Reloader
end
get '/' do
'hi'
end
Run Code Online (Sandbox Code Playgroud)
请注意,有时重新加载更改需要几秒钟(在我的机器上为 5 秒钟),我建议您查看此处的替代方案