jasagiri @ ウィキ
Rack
最終更新:
jasagiri
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://chneukirchen.org/blog/archive/2007/02/introducing-rack.html
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
- そのままだと json コンパイルしないといけないので変わりに json_pure を使う方法
サイトからrack-contrib ダウンロード 展開した中の .gemspecを開いて 47行目あたりの s.add_dependency 'json' を 'json_pure' に変更 展開したファイルを<ruby_gems_root>/gems/rack-contrib-0.4.0にコピー 先ほど編集した.gemspecファイルを<ruby_gems_root>/specifications/rack-contrib-0.4.0.gemspec にコピー 足りない gem をインストール rake test => 幸せ(sendfileはwindowsのファイルパスに対応していなげ)
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サーバ>に処理を渡す。