【问题标题】:Rack::Reloader not picking up changesRack::Reloader 不接受更改
【发布时间】:2016-04-21 14:13:55
【问题描述】:

考虑这个config.ru 文件:

require 'sinatra'

use Rack::Reloader, 0

get '/' do
  'hi'
end

run Sinatra::Application

我从命令行使用thin start 启动它。当我点击localhost:3000 时,应用程序运行并显示hi。如果我现在将hi 更改为hello,保存文件并重新加载页面,更改不会出现:页面仍然显示hi

为什么Rack::Reloader 在这种情况下不起作用?我可以更改任何内容以使其正常工作吗?

【问题讨论】:

    标签: sinatra rack


    【解决方案1】:

    请参阅here 了解正在发生的事情的详细说明。本质上,每次更改文件时,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
    

    请注意,有时需要几秒钟(我的机器上 5 秒)才能重新加载更改,我建议您使用 look at the alternatives here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-09
      • 2010-11-29
      • 1970-01-01
      • 2020-05-21
      • 2018-09-16
      • 2021-12-01
      • 1970-01-01
      • 2012-06-15
      相关资源
      最近更新 更多