gpt4 book ai didi

ruby - 根据 Windows 上的每个请求重新加载 Sinatra 应用程序

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:26 25 4
gpt4 key购买 nike

我已经根据这个 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

通过 thin start -R config.ru 使用 thin 运行,但它只会重新加载新添加的路由。当我更改现有路线时,它仍会运行旧代码。

当我添加新路由时,它会正确地重新加载它,因此它可以访问,但它不会重新加载任何其他内容。

例如,如果我将路线更改为

get '/' do
'bar'
end

get '/foo' do
'baz'
end

/ 仍然服务于 foo,即使它已经改变,但是 /foo 将正确地重新加载并服务于 baz.

这是正常行为,还是我遗漏了什么?我希望重新加载整个源文件。我现在能想到的唯一解决方法是在文件系统更改时重新启动整个网络服务器。

我在 Windows Vista x64 上运行,所以我不能使用 shotgun 因为 fork()

最佳答案

你可以试试 sinatra-reloader ,众所周知,它在 Windows 上运行良好(而且,它比 shotgun 更快)。

关于ruby - 根据 Windows 上的每个请求重新加载 Sinatra 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1921334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com