Skip to content

Instantly share code, notes, and snippets.

@Shinpeim
Last active December 16, 2015 10:38
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Shinpeim/5421068 to your computer and use it in GitHub Desktop.
Save Shinpeim/5421068 to your computer and use it in GitHub Desktop.

Rackアプリケーション

ユーザーからのリクエストとかが詰まった「env」っていうオブジェクトを受け取って「ステータスコード、HTTPレスポンスヘッダとボディ」を返すアプリケーション。コネクションの管理とかはしない。たんじゅんにenvっていうオブジェクトを受け取って結果を返す、ふつうの Ruby のクラス。

たんじゅんにenvを受け取って結果を返すだけのものだから、一枚wrapすることで「本体のRackアプリケーションにenvを渡す前にちょこっとenv書き換えたれ」とか「本体から帰ってきたレスポンス書き換えたれ」とかが簡単にできる。これがRackミドルウェア。

Sinatra とか Rails で書いたアプリケーションの実体はRackアプリケーションである(というかRackアプリケーションにできる)。言い方を変えると、Sinatraとかは「Rackアプリケーションを作るためのフレームワーク」である。

Rackサーバー

HTTPリクエストを受け取って、環境変数とかといっしょにした env を作る。そしたら env をRackアプリケーションに渡して、Rackアプリケーションから受け取ったステータスコード、HTTPレスポンスヘッダとボディをHTTPレスポンスとして返す。という動きをするサーバー。

unicornとか。

という認識

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment