「Rack」の編集履歴(バックアップ)一覧に戻る
Rack - (2009/01/10 (土) 03:48:21) のソース
= Rack = WEBアプリケーションサーバ抽象 http://rack.rubyforge.org/ http://labs.unoh.net/2007/05/rackweb.html http://blog.hacklife.net/archives/51439023.html 動作まとめ http://d.hatena.ne.jp/authorNari/20080304/1204621583 http://m.onkey.org/2008/11/17/ruby-on-rack-1 http://m.onkey.org/2008/11/18/ruby-on-rack-2-rack-builder JSONP http://actsasflinn.com/2008/06/16/json-p-rack-handler Rack-contrib (ミドルウェアまとめ) http://github.com/rtomayko/rack-contrib/tree/master rack-cache http://github.com/rtomayko/rack-cache/tree/master rack-config http://github.com/jcrosby/rack-config/tree/master rack-auth-ip http://github.com/walf443/rack-auth-ip/tree/master rack-jpmobile http://github.com/walf443/rack-jpmobile/tree/master rack-javascript-minifier http://github.com/lucianopanaro/rack-javascript-minifier/tree/master == Rackの動作 == *rackup コマンドでWEBサーバの依存関係を吸収できる。 *Rack::Builder.to_appが肝。 **rack-0.3.0/bin/rackup 起動オプションとデフォルトポート9292 .ruファイルの読み込み Rack.new で該当WEBサーバ用の処理のためevalしてinner_appに。 デプロイ app = Rack::Builder.new{いろいろ,inner_app}.to_app **rack-0.3.0/lib/rack/builder.rb 初期化(initialize) DSL(use run map) to_app @insの最後の値がHashならRack::URLMap.newに置き換え。 @insを最後から1つずつとりだす。 取り出した(useした)オブジェクトのinitializeに引数で渡してnewする。(を繰り返す) (ExampleではShowExceptionsとCommonLogger。) **rack-0.3.0/lib/rack/handler/<WEBサーバ>.rb self.runでto_appで積んだインスタンスのデプロイする。 リクエストがあった場合。 WEBrickの場合service Mongrelの場合process SCGIの場合process_request @app.callでHTTPレスポンスを作成してbodyに格納。 **rack-0.3.0\lib\rack\showexceptions.rb例 callで再起呼び出し。 runまで例外なく処理が進むと<WEBサーバ>に処理を渡す。