Ruby: はじめての Rack

Rack とは

Web サーバー (Apache, nginx) とアプリケーションフレームワーク (Rails, Sinatra) をつなぐ Ruby のインターフェース仕様。
Python でいう WSGI、Perl でいう PSGI。

規定
・呼び出し可能な call(env) メソッドがある
・call(env) メソッドは、ステータスコード、ヘッダ (Hash)、ボディ (Array) から成るレスポンスを返す

 

インストール

$ gem install rack

 

サンプル

call メソッドを持った Ruby アプリ

Ruby: rackapp.rb

# -*- encoding: utf-8 -*-

class RackApp
  def call(env)
    p env
    case env['REQUEST_METHOD']
    when 'GET'
      [
        200,
        {'Content-Type' => 'text/html'},
        ['<html><body>Hello World</body></html>']
      ]
    end
  end
end

RackUp ファイルを用意する。

RackUp: config.ru
# -*- encoding: utf-8 -*-

require File.expand_path(File.dirname(__FILE__)) + '/rackapp.rb'
run RackApp.new

規約っぽく空の tmp / public ディレクトリを作っておく。

.
├── config.ru
├── public
├── rackapp.rb
└── tmp

 

起動コマンド

$ rackup

port 9292 とかで起動する。