9292)ここでサーバが立ち上がっているということだろう。いうものがあるが、Rackという名前が表すように、このようにして機能を繋げていくことができると読み取れる。試しに何かを外せばいい。いうリンクが存在する。crashにアクセスすると、Lobster#call上のraise文にたどり着くはずだ。スタックトレースを含む内容が表示されるページに遷移する。やりそうな内容である。してcrashにアクセスする。Pumaが例外を捕捉したらしい。いうことはこの挙動はrackは規定していない。試しにwebrickにしてみて違いを確認しよう。追加するとwebrickが立ち上がる。:webrickこれでcrashしてみる。Error表示が変わった。よってこの.newで包めている部分で機能を追加したりできるのだとわかる。そもそもpumaやwebrickとrackの関係はどうなっているのだろうか?さて、ここでRackについてわかることといえばこうだ。Rackはappを元にアプリケーションサーバを立ち上げている。appは、callメソッドを持つ必要がある。Rackのアプリケーションは、以下の方式で機能を積み上げる。(よって括弧の中心を除き、newはappを受け取りappを生成する必要がある。メソッドが満たすべき要件について調査しよう。正体に当たりをつけるため、色々出力をためそう。いれることで、サーバへのアクセス時にenvのクラスがログ出力され、Hashであることがわかる。次に、hashの中身の雰囲気を学ぼう。書いて、valueに当たる部分のクラスまで調べておこう。HTTP_USER_AGENTやQUERY_STRINGのようにリクエストにあたるような情報に対応しそうなキーrack.***やasync.***のようにドット区切りのキーがある。HTTP_USER_AGENTなど前者は全てStringで、rack.***などは、Rack::Lint::InputWrapperのような不思議なクラスもある。したがって、恐らくHTTPリクエストから得られる情報と、付随して様々なデータがあることがわかる。全てのことを行っている。呼ばれるのかわかるはずだ。