コマンドラインからWEBrickを起動
一時的に任意のディレクトリをHTTPサーバに公開したくなったので、WEBrickを起動するスクリプトを組んでみた。既存のものがある気がしなくはないけど、OptionParserの勉強という意味も含めて。
#!/usr/bin/env ruby require 'optparse' require 'webrick' include WEBrick # WEBrickを起動する際のオプションのデフォルト値 WebrickOptions = { :Port => 8000, :DocumentRoot => Dir::pwd, } OptionParser.new do |opt| # パース方法を設定する # オプションが指定されていた場合にブロックが評価される opt.on('-p', '--Port N', Integer) { |v| WebrickOptions[:Port] = v } opt.on('-d', '--DocumentRoot PATH') { |v| WebrickOptions[:DocumentRoot] = v } # 実際にパースを行う opt.parse!(ARGV) end # WEBrickを起動する s = HTTPServer.new(WebrickOptions) trap("INT") { s.shutdown } s.start
オプションを指定しない場合は8000番ポートにカレントディレクトリをドキュメントルートとして起動する。
$ ruby webrick
-pオプションもしくは–Portオプションでポート番号を指定し、-dオプションもしくは–DocumentRootでドキュメントルートを指定する。
$ ruby webrick -p 8080 -d ~/Sites
これらの値を指定しない場合にはOptionParser::MissingArgument
が投げられる。
$ ruby webrick -p #=> OptionParser::MissingArgument
なおここでは使っていないが、オプションの引数を必須としない場合には次のように[
を含める。
opt.on('-p', '--Port [N]', Integer) { |v| WebrickOptions[:Port] = v }
引数が与えられたときにはopt.on
のブロックにその値が渡され、引数が与えられなかった場合には「オプションが指定された」という意味でtrueが渡される。
参考文献
追記
gistに追加した