gpt4 book ai didi

ruby - Rack::Builder 和 Rack::TryStatic 不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:05 25 4
gpt4 key购买 nike

我有一个 Middleman我正在使用 Rack::TryStatic 服务的应用程序。

这是config.ru

use Rack::TryStatic,
root: 'build',
urls: %w[/],
try: ['.html', 'index.html', '/index.html']

run lambda{ |env|
four_oh_four_page = File.expand_path("../build/404.html", __FILE__)
[ 404, { 'Content-Type' => 'text/html'}, [ File.read(four_oh_four_page) ]]
}

我的理解是,当您将 config.rurunmapuse 一起使用时方法,它们被转换为 Rack::Builder 对象。

我试过将此配置包装在 Rack::Builder 对象中,如下所示:

app = Rack::Builder.new do

use Rack::TryStatic,
root: 'build',
urls: %w[/],
try: ['.html', 'index.html', '/index.html']

run lambda{ |env|
four_oh_four_page = File.expand_path("../build/404.html", __FILE__)
[ 404, { 'Content-Type' => 'text/html'}, [ File.read(four_oh_four_page) ]]
}
end

run app

当我这样做时,我得到所有请求的 404 页面。

为什么这行不通?

最佳答案

看起来当前发布的 TryStatic 版本中有一个错误 has been fixed in master ,其中 try 数组在以导致中间件重新初始化的方式使用时丢失。

您可以通过使用 to_app 确保应用仅初始化一次来避免这种情况:

run app.to_app

或者等效地使用 app 而不是 new:

app = Rack::Builder.app do
# ...

关于ruby - Rack::Builder 和 Rack::TryStatic 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26013789/

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