LoginSignup
9
8

More than 5 years have passed since last update.

Ruby(Rack)で1行静的コンテンツWebサーバーを作る

Last updated at Posted at 2014-11-12

追記:コメントで教えていただいたがこちらの方がよりシンプルでよい。
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")

一行に収まらなくなってしまった…。

9
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8