追記:コメントで教えていただいたがこちらの方がよりシンプルでよい。
ruby -run -e httpd . -p 8080
以下は、RackMiddlewareの単体実行例とでもお考えください。
何かしら静的コンテンツを確認するために、
ささっとwebサーバーを立ちあげたいときがある。
そのような場合、rubyならばワンライナーでサーバーを作成できる。
(ruby本体および、gemとしてrack
が入っていることが前提)
コマンドは以下。
bash
$ ruby -rrack -e 'Rack::Handler.default.run Rack::Static.new(nil,urls:[""])'
実行パス以下のファイルを "http://localhost:8080/ファイル名"
で参照できる。
引数オプションは以下。
urls: サーバーで受け付けるURLパスの配列(必須)
root: ルートとなるファイルパスの文字列(例: "./public")
index: パスがディレクトリのときデフォルトで表示されるファイル(例: "index.html")
詳細は以下参照のこと。
http://www.rubydoc.info/github/rack/rack/Rack/Static
また、最初の例のRack::Static.new
の第一引数nil
はデフォルトのRackアプリケーションを表すので、
urls
に含まれていないパスを叩いたときに、nil
にルーティングされてエラーになる。
その場合は->e{[200,{},[""]}
を第一引数として与えること。
オプションを与えた場合の例は以下。
$ruby -rrack -e 'Rack::Handler.default.run \
Rack::Static.new( \
->e{[200, {}, [""]}, \
urls: ["/pages", "/javascripts"], \
root: "./public", \
index: "index.html")
一行に収まらなくなってしまった…。