ようへいの日々精進XP

よかろうもん

Ruby でワンライナー Web サーバーを起動する

参考

qiita.com

ホントにワンライナー

起動

# 作業用のディレクトリ作成
mkdir ~/web
cd ~/web

# HTML ファイルを用意
touch test.html

# ワンライナー Web サーバー起動
ruby -run -e httpd . -p 8000 &

# 起動した
[2015-06-13 01:25:26] INFO  WEBrick 1.3.1
[2015-06-13 01:25:26] INFO  ruby 2.1.5 (2014-11-13) [x86_64-linux-gnu]
[2015-06-13 01:25:26] INFO  WEBrick::HTTPServer#start: pid=9080 port=8000

どうやら WEBrick が起動するようだ。

確認

$ curl -I localhost:8000/test.html
HTTP/1.1 200 OK
Etag: a1ea3-0-557b85d9
Content-Type: text/html
Content-Length: 0
Last-Modified: Sat, 13 Jun 2015 01:22:33 GMT
localhost - - [13/Jun/2015:01:27:47 UTC] "HEAD /test.html HTTP/1.1" 200 0
Server: WEBrick/1.3.1 (Ruby/2.1.5/2014-11-13)
Date: Sat, 13 Jun 2015 01:27:47 GMT
Connection: Keep-Alive

- -> /test.html

ちゃんとレスポンス返ってくる。

どうやってんの?

un という Unix の基本コマンドの代替となる Class の httpd メソッドを利用しているとのこと。

ruby-doc.org

以下のようなオプションが利用出来る。

ruby -run -e httpd -- [OPTION] DocumentRoot

--bind-address=ADDR         address to bind
--port=NUM                  listening port number
--max-clients=MAX           max number of simultaneous clients
--temp-dir=DIR              temporary directory
--do-not-reverse-lookup     disable reverse lookup
--request-timeout=SECOND    request timeout in seconds
--http-version=VERSION      HTTP version
-v                          verbose

ということで

ちょっと Web サーバーを起動したい場合に Apache や Nginx をインストールするのがカッタルイ場合にお手軽に利用出来そう。