どうも、今回はRailsで開発をしていると何かと耳にすることがあるRackについて簡単にまとめておきたいと思います。
かなりざっくりとした理解を目指しています。なのでもしRackの詳細が気になる人は他の記事を参考にしてください。
Rackとは?
結論
RubyのフレームワークであるRailsとかSinatraとかと、色々な種類のサーバーたち(puma、unicornなどなど)をいい感じにつないでくれる便利なやつ。
ちょっと詳しく
いきなりですが、Rackは人間界で言うと、通訳さんみたいな感じです。
例えばタガログ語を話す人と、スワヒリ語を話す人がいたとします。この人たちがコミュニケーションを取るためには、タガログ語とスワヒリ語を理解できる人が必要ですよね?
このタガログ語とスワヒリ語を理解していて、通訳できる役割を持っている人。こんな感じの状態の人が、プログラミングでいうRackというやつです。
例えばRubyの有名なフレームワークであればRailsですが、それ以外にもたくさんのフレームワークがあります。Sinatraとかですね。
同じようにサーバーですね、アプリケーションサーバーであれば有名なのはpuma、Unicornなどですが、それ以外にもたくさんのサーバーがあります。
こうやって色々なフレームワーク、色々なサーバーが出現してきて、問題になったことがあります。それはお互いの互換性がなかったことです。例えばRails使っていて、pumaを使おうと思った時に、それ用のコードを書かないといけなかったことです。
Rails使って、やっぱUnicornにしよとか、RailsじゃなくてSinatraにしよとか、そういうのがやりたかったわけですね。ところがそれぞれの言葉をお互いに理解できるわけじゃなかったので、いちいちコードを書いてあげたり、メンテナンスが必要でした。
それを解決してくれたのが、Rackです。RailsでもSinatraでも、サーバーとやりとりする部分をRackでつくっておけば、大丈夫になったということです。
ちなみに普通にrails s すると裏ではRackが動いてくれているということです。知らなかった、ワンダフル。