matomomomemo

シンプルなrackアプリケーションを作ったら少しハマった

こんな感じで動かそうと思ってた。が、思った通り動かない。

gem install rack
 app = lambda do |env|
     [200, { "Content-Type" => "text/html"}, ["Hello world!\n"]]
 end
 run app
 rackup simple_rackapp.ru

rackupコマンドが見つからない

おそらくRack3から、rackup が別のgemとして切り出されていた。rackup でrackアプリケーションののインターフェースが提供され、 rack に実装が置かれているっぽい。ひとまず今回はrackupをインストールして解消した。

 gem install rackup

ヘッダーに大文字が使えない

元の実装をrackupコマンドで立ち上げると、以下のエラーが発生した。headerの中で大文字が使われているとのこと。

 Rack::Lint::LintError: uppercase character in header name: Content-Type (Rack::Lint::LintError)

Rack3のアップグレードガイド に該当の内容が書かれていた。

Response header keys can no longer include uppercase characters.

無事解消。

  app = lambda do |env|
      [200, { "content-type" => "text/html"}, ["Hello world!\n"]]
  end