maeshimaの日記

メモ書きです

Rackの復習

Ruby Freaks Lounge:第23回 Rackとは何か(1)Rackの生まれた背景|gihyo.jp … 技術評論社
Ruby Freaks Lounge:第24回 Rackとは何か(2)Rackの使い方|gihyo.jp … 技術評論社

を読み直してのメモ。

Rackアプリケーションに必要なこと

下記を満たすオブジェクトがあること。

  • callというメソッドを持っていること
  • callメソッドの引数としてWebサーバからのリクエストを受けること
  • callメソッドは,次の要素を含むレスポンスを返すること

Rackアプリの立ち上げ

rackupコマンド。オプションいろいろ。

  -s, --server SERVER      serve using SERVER (webrick/mongrel)
  -o, --host HOST          listen on HOST (default: 0.0.0.0)
  -p, --port PORT          use PORT (default: 9292)
  -E, --env ENVIRONMENT    use ENVIRONMENT for defaults (default: development)
  -D, --daemonize          run daemonized in the background
  -P, --pid FILE           file to store PID (default: rack.pid)

リクエスト/レスポンスのラッパー

Rack::RequestとRack::Responseを使うとリクエスト/レスポンスの扱いが楽になる。

Rackアプリのテスト用のライブラリ

Rack::MockRequestを使うと実際にリクエストを投げなくてもテストができる

簡単なマッピング

Rack::Builder内(config.ru内)で

map "/hoge" do
  run HogeApp.new
end

のようにするとルーティングによって動かすRackアプリを切り替えたり出来る。

urlmap = Rack::URLMap.new( '/simple' => SimpleApp.new, '/lobster' => Rack::Lobster.new )

のようにしても使えるらしい。