2

config.ru ファイルの 404 エラー ページをラック静的ページ (heroku でホスト) にマップするにはどうすればよいですか?

これまでのところ、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 に関するより高度な知識を得るために使用できるリンクを共有してください。宝石からの基本的なリンクが役立つとは思いませんでした。

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 に答える