lobster.rbがあるリポジトリが引っ越ししていることに気がついた

Lobsterです🦞。イセエビとは違う属とのこと。

まとめ

  • lobster.rb というサンプルコードがrack/rackにあった
  • 最近探しに行ったらrack/rackになかった
  • rack/rackupで元気にやってそう

lobster.rb

社内で開かれたライブラリのコードリーディング会*1の最初期に rack/rack のソースコードを読んでいたときのこと。とあるサンプルコードを見つけました。それが私と rack/lobster.rb との出会いでした。

このLobsterはかわいいやつで、右を向いたり、左を向いたり、時には自爆してメッセージを残したりします。これだけだと知らない人はなにがなんだかわからないと思うので補足すると、以下のような挙動をするサンプルサーバーです。レスポンス、パラメータの受け取り、Rack middlewareを利用した例外発生時のハンドリングやそのmiddlewareの処理の仕組みが組み込まれていて、Rackの仕組みがよく理解できるコードになっていると思います。

  • リクエストするとロブスターのAAが表示される
  • flip パラメータを渡すとロブスターの向きが変わる
  • crash パラメータを渡すと RuntimeError が送出される

lobster

?flip=left で左を向く

crash! のリンクを選択すると例外吐いてそのときのログがレスポンスとして返ってくる

消えたLobsterとその行方

このlobster.rbは今rack/rackのmasterには存在しません。今は rack/rackup にお引越ししています。

rackup/lobster.rb at v0.2.3 · rack/rackup · GitHub

Rack 3で Rackupを別のgemに切り出した際にrackupのサンプルであるlobsterも一緒に移動された形になります。以下のアップグレードガイドにも記載があります。

rack/UPGRADE-GUIDE.md at main · rack/rack · GitHub

以下のPRで削除されていることも確認できます。