Ruby-WEBrickでwebサーバ

Ruby WEBrickについて

WEBrickはRubyのみで書かれたWebサーバー用フレームワークです。

Ruby 1.8以降のバージョンでは標準添付されています。

WEBrickを利用することで、簡易的なHTTPサーバーを作成して、CGIやWebアプリケーションの動作を確認することができます。


WEBrickのサンプル


#!/usr/bin/ein ruby

require 'webrick'

# 拡張子「.rb」ファイルをCGIとして実行可能にする。
module WEBrick
  module HTTPServlet
    FileHandler.add_handler("rb", CGIHandler)
  end 
end

# 動作設定
opt = { 
  :DocumentRoot   => '.',
  :Port           => nil,
  :BindAddress    => nil 
}
server = WEBrick::HTTPServer.new(opt)

# CGIを実行可能にする
cgi_dir = File.dirname(File.expand_path(__FILE__))
server.mount("/", WEBrick::HTTPServlet::FileHandler, cgi_dir)

# サーバの終了シグナルを設定する
['INT', 'TERM'].each {|signal| 
  trap(signal) {server.shutdown}
}

# サーバを開始する
server.start

WEBrickの設定について

サーバ設定について

WEBrick::HTTPServerクラスを使用します。

Webサーバの設定はnewの引数にハッシュで指定します。


CGIの利用について

拡張子をが「.cgi」のファイルに実行属性を付加します。


server.mount(Webサーバ上でのパス ,
             WEBrick::HTTPServlet::CGIHandler ,
             CGIプログラムのファイルパス)

実行可能ファイルの追加

デフォルトでは、cgiやrhtmlなどの拡張子のみがCGIとして実行可能なファイルとなります。

rbやhtmlといった拡張子のファイルをCGIとして実行させるには、以下の設定を行います。

サーバオブジェクトを作成する前に呼び出しておきます。


require 'webrick'

module WEBrick::HTTPServlet
  WEBrick::HTTPServlet::FileHandler.add_handler('rb',   WEBrick::HTTPServlet::CGIHandler)
  WEBrick::HTTPServlet::FileHandler.add_handler('html', WEBrick::HTTPServlet::ERBHandler)
end

ファイル一覧を表示しない

indexが存在しない場合の、ファイル一覧を表示しないようにする


:DocumentRootOptions => { :FancyIndexing => false }

関連ページ