Rackの復習
Ruby Freaks Lounge:第23回 Rackとは何か(1)Rackの生まれた背景|gihyo.jp … 技術評論社
Ruby Freaks Lounge:第24回 Rackとは何か(2)Rackの使い方|gihyo.jp … 技術評論社
を読み直してのメモ。
Rackアプリケーションに必要なこと
下記を満たすオブジェクトがあること。
- callというメソッドを持っていること
- callメソッドの引数としてWebサーバからのリクエストを受けること
- callメソッドは,次の要素を含むレスポンスを返すること
- ステータスコード
- レスポンスヘッダ(Hash)
- レスポンスボディ(Array)
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 )
のようにしても使えるらしい。