Sinatra触ってると出てくるRackって何?
移転しました。
Sinatraを触ってると、Rackがいろんなところで出てくるが、いまいちわからないので調べた。
以下のページを参考。
- Ruby Freaks Lounge:第23回 Rackとは何か(1)Rackの生まれた背景|gihyo.jp … 技術評論社
- Ruby Freaks Lounge:第24回 Rackとは何か(2)Rackの使い方|gihyo.jp … 技術評論社
- Ruby Freaks Lounge:第25回 Rackとは何か(3)ミドルウェアのすすめ|gihyo.jp … 技術評論社
Rackとは、
WSGIに影響された。
WSGIとは,PythonのためのWebサーバとWebアプリケーション/フレームワーク間の標準インターフェースを定める「仕様」です。(中略)
両者間の標準インターフェースが提唱され,WSGIに対応しているフレームワークと,WSGIを介して連携できるWebサーバとをユーザが好みの組み合わせで使えるようになったのです。(中略)
RackはこのWSGIに影響されて開発された,Rubyにおけるサーバとアプリケーション/フレームワーク間のインターフェースの役割を果たすライブラリです。「インターフェースが統一されていれば,サーバやフレームワークの組み合わせは自由である」
Ruby Freaks Lounge:第23回 Rackとは何か(1)Rackの生まれた背景|gihyo.jp … 技術評論社
rackupによって起動される。
app.rb等、ファイルの末尾に以下のコードを書き加えることで、app.rb単体でアプリケーションを起動できる。
if __FILE__ == $0 require 'rack/handler/webrick' Rack::Handler::WEBrick.run SimpleApp.new, :Port => 9292 end
問題は、サーバ依存のコードが残ってしまうこと。
サーバとアプリケーションの間に、Rackが入ることによって、自由に組み合わせられるのメリットが失われてしまう。
だから、rackupによって、起動させる。
「基本的にはconfig.ruに色々書いて,アプリケーション側にはサーバ依存のコードは書かない」