-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathex2504.rb
More file actions
40 lines (35 loc) · 1.62 KB
/
ex2504.rb
File metadata and controls
40 lines (35 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# -*- coding: utf-8 -*-
require 'webrick' # WEBrickを使うときには記述する
require 'date'
# サーバーの設定を書いたハッシュを用意する
# ポートは通常使う80番ではなく、使っていなそうなポート番号にしておく
# 8099は空いていそうなポート番号の例
# DocumentRootは文書のある場所
# ここでは現在のディレクトリを表す「.」を指定している
config = {
:Port => 8099,
:DocumentRoot => '.',
}
# WEBrickのHTTP Serverクラスのサーバーインスタンスを作成する
server = WEBrick::HTTPServer.new ( config )
# mount_procメソッドで、サーバーに実行時に処理する応答を追加する
# ここでは、"http://localhost:8099/testprog" で実行できる処理を追加
# req はリクエストの情報の、res はレスポンスのハッシュ
server.mount_proc("/testprog") { |req, res|
# アクセスした日付をレスポンスの内容に追加
res.body << "<html><body><p>アクセスした日付は#{Date.today.to_s}です。</p>"
res.body << "<p>リクエストのパスは#{req.path}でした。</p>"
# リクエストの内容を、番号なしリストにしてレスポンスの内容に追加
res.body << "<ul>"
req.each { |key, value|
res.body << "<li>#{key} : #{value}</li>"
}
res.body << "</ul>"
res.body << "</body></html>"
}
# Ctrl-C割り込みがあった場合にサーバーを停止する処理を登録しておく
trap(:INT) do
server.shutdown
end
# 上記記述の処理をこなすサーバーを開始する
server.start