• SIS Lab
  • >
  • Blog
  • >
  • Sinatra触ってると出てくるRackって何?

Sinatra触ってると出てくるRackって何?

更新日:2021.02.20 作成日:2012.02.01

Sinatraを触ってると、Rackがいろんなところで出てくるが、いまいちわからないので調べた。

Rackとは

ミドルウェアである

別のアプリケーションをラップして、リクエストやレスポンスの加工、処理を切り替える。

WSGIに影響された

WSGIとは,PythonのためのWebサーバとWebアプリケーション/フレームワーク間の標準インターフェースを定める「仕様」です。(中略)

両者間の標準インターフェースが提唱され,WSGIに対応しているフレームワークと,WSGIを介して連携できるWebサーバとをユーザが好みの組み合わせで使えるようになったのです。(中略)

RackはこのWSGIに影響されて開発された,Rubyにおけるサーバとアプリケーション/フレームワーク間のインターフェースの役割を果たすライブラリです。「インターフェースが統一されていれば,サーバやフレームワークの組み合わせは自由である」

第23回 Rackとは何か(1)Rackの生まれた背景:Ruby Freaks Lounge|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に色々書いて、アプリケーション側にはサーバ依存のコードは書かない」

以下のものが最低限必要

  • callというメソッドを持っていること
  • callメソッドの引数としてWebサーバからのリクエストを受けること
  • callメソッドは次の要素を含むレスポンスを返すること
    • ステータスコード
    • レスポンスヘッダ(Hash)
    • レスポンスボディ(Array)

参考ページ

以下のページを参考にしました。

Related contents