岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

Rack

Rack::Request#[]でUTF-8文字列が返ってくる件

$ ruby -v ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] $ gem list | grep rack rack (1.3.0)という環境で: require 'rack' class MyApp def call(env) [200, {"Content-Type" => "text/plain"}, [Rack::Request.new(env)['hoge'].encoding…

Rack用HTTPデーモンの複数起動を制御するスクリプト

RailsでいうところのMongrelClusterのような、複数のHTTPデーモンを起動したり停止したりする仕組みがRackにもあったら便利だなーと思い、Daemonsを使う方法を考えてみました。以下、サンプルコードに注釈をまじえながら。 まずはrequire require 'rubygems'…

条件付きGETに対応するRackミドルウェア「Rack::ConditionalGet」

コミットされてました。 ConditionalGet middleware (Last-Modified/Etag) · chneukirchen/rack@3b31e21 · GitHub 実装を見ると、If-None-Matchが「*」や複数のエンティティタグに対応しておらず、RFC的には微妙な感じ。とはいえ、そんなリクエストを投げる…

Rack 0.4がリリースされていた

去る21日に、Rack 0.4がリリースされていました。 [ANN] Rack 0.4, a modular Ruby webserver interface == Changes * August 21st, 2008: Fourth public release 0.4. * New middleware, Rack::Deflater, by Christoffer Sawicki. * OpenID authentication …

Pinto公開に向けて #19 ― HTTPレスポンスヘッダのテストを考える

あらすじ Pintoというソーシャルブックマークサービス、およびPintoBeansというWebアプリケーションフレームワークをRubyで開発中です。その際に気づいたことや工夫した点などを、備忘録を兼ねて書いています。その19回目です。 Rackの挙動を確認 PintoではR…

Webアプリケーションをテスト駆動開発するには

TDDならモックの出番はない? いつものように思いつきエントリなので、眉にツバをキュッキュとつけてお読みいただければ幸いです。「Pinto公開に向けて #18 ― RSpecのモックを使ってみた」では、Rackエントリポイントの実装と、そのテストコードを考えました…

Pinto公開に向けて #18 ― RSpecのモックを使ってみた

あらすじ Pintoというソーシャルブックマークサービス、およびPintoBeansというWebアプリケーションフレームワークをRubyで開発中です。開発中に気づいたことや工夫した点などを、備忘録も兼ねて書いています。その18回目です。 Rackインターフェーサが必要だ…

Pinto公開に向けて #14 ― rackupの「-E」オプション

あらすじ Pintoというソーシャルブックマークサービスを、Rubyで開発中です(GitHubリポジトリ)。開発中に気づいたことや工夫した点などを、備忘録も兼ねて書いています。その14回目です。 本題 Rack本体のbin/rackupにはいろいろなオプションを渡せます。 …

Content-Typeレスポンスヘッダに注意

RackのSPECを引用します。 There must be a Content-Type, except when the Status is 204 or 304, in which case there must be none given. http://rack.rubyforge.org/doc/files/SPEC.html ステータスコードが204でも304でもない場合、Content-Typeレスポ…