ruby – 直接使用Rack TryStatic提供文件?
我正在使用Middleman创建一个静态站点.
Middleman在./build目录中生成静态html文件. 这是我目前正在使用的配置: require 'rubygems' require 'middleman' require 'rack/contrib/try_static' use Rack::TryStatic,:root => "build",:urls => %w[/],:try => ['.html'] run Middleman::Application.server 所以Middleman正在提供静态文件.如何让Rack :: TryStatic直接处理请求? 我试着让它成为像 run Rack::TryStatic,:try => ['.html'] 但它不起作用运行只接受1个参数.而Rack :: TryStatic需要2个参数,app和options来初始化,我没有任何应用程序. 我怎样才能做到这一点? (如果重要的话,我正在部署到Heroku) 解决方法
正如您所注意到的,Rack :: TryStatic等Rack中间件组件需要另一个应用程序来传递请求.您可以创建一个简单的用户,例如刚刚返回404响应,例如:
app = lambda {|env| [404,{'Content-type' => 'text/plain'},['Not found'] run Rack::TryStatic.new app,:try => ['.html'] 或等效地: use Rack::TryStatic,:try => ['.html'] run lambda {|env| [404,['Not found']]} 如果您有自己的404文件,则可以使用rack-contrib的 use Rack::TryStatic,:try => ['.html'] run Rack::NotFound.new('path/to/your/404.html') 如果你没有使用:try数组文件扩展名来尝试和服务,你可以直接使用 run Rack::File.new './build' 虽然这不允许“裸”请求与相应的.html文件一起提供 – 所有请求都需要指定整个文件名. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |