2

如何在 config.ru 文件 oa 机架静态页面(托管在 heroku 上)中映射 404 错误页面?

到目前为止,我的 config.ru 文件中有这个

use Rack::Static, 
  :urls => ["/css", "/images", "/fonts", "/js", "/robots.txt"],
  :root => "public"

run lambda { |env|
  [
    200, 
    {
      'Content-Type'  => 'text/html', 
      'Cache-Control' => 'public, max-age=86400' 
    },
    File.open('public/index.html', File::RDONLY)
  ]
}

我正在尝试做这样的事情:

if env["PATH_INFO"] =~ /^\/poller/
  [200, {"Content-Type" => "text/html"}, ["Hello, World!"]]
else
  [404, {"Content-Type" => "text/html"}, ["Not Found"]]
end

如何使用 Rack 实现这一目标?请分享您拥有的任何链接,我可以用来在 Rack 上学习更多高级内容。我并没有真正发现 gem 中的基本链接有帮助。

4

1 回答 1

3

你应该使用Rack::Builder,它会自动为未映射的 URL 抛出 404:

app = Rack::Builder.new do

  map '/poller' do

    use Rack::Static,
      :urls => ["/css", "/images", "/fonts", "/js", "/robots.txt"],
      :root => "public"

    run lambda { |env|
      [
        200, 
        {
          'Content-Type'  => 'text/html', 
          'Cache-Control' => 'public, max-age=86400' 
        },
        File.open('public/index.html', File::RDONLY)
      ]
    }
  end

end.to_app

run app
于 2012-12-08T10:37:56.130 回答