Persistence

技術メモなど

WEBrickでWebServerを立てる①

Rubyに組み込まれている簡易WevServerのWEBrickを使ってみる。

ソース

#!C:\Ruby193\bin\evn ruby
require "webrick"
include WEBrick

s = HTTPServer.new(
  :Port => 8000,
  :DocumentRoot => File.join(Dir::pwd,"public_html")
)
trap("INT"){s.shutdown}
s.start    

 

実行エラー①

>ruby httpserver1.rb
httpserver1.rb:8:in `<main>': uninitialized constant Dir::Pwd (NameError)

→Dir::pwd の記述誤り(小文字が正しい)

 

実行エラー②

>ruby httpserver1.rb
[2012-05-11 12:57:30] INFO  WEBrick 1.3.1
[2012-05-11 12:57:30] INFO  ruby 1.9.3 (2012-04-20) [i386-mingw32]
[2012-05-11 12:57:30] WARN  TCPServer Error: Only one usage of each socket addre
ss (protocol/network address/port) is normally permitted. - bind(2)
C:/Ruby193/lib/ruby/1.9.1/webrick/utils.rb:85:in `initialize': Only one usage of
 each socket address (protocol/network address/port) is normally permitted. - bi
nd(2) (Errno::EADDRINUSE)
        from C:/Ruby193/lib/ruby/1.9.1/webrick/utils.rb:85:in `new'
        from C:/Ruby193/lib/ruby/1.9.1/webrick/utils.rb:85:in `block in create_l
isteners'
        from C:/Ruby193/lib/ruby/1.9.1/webrick/utils.rb:82:in `each'
        from C:/Ruby193/lib/ruby/1.9.1/webrick/utils.rb:82:in `create_listeners'

        from C:/Ruby193/lib/ruby/1.9.1/webrick/server.rb:82:in `listen'
        from C:/Ruby193/lib/ruby/1.9.1/webrick/server.rb:70:in `initialize'
        from C:/Ruby193/lib/ruby/1.9.1/webrick/httpserver.rb:45:in `initialize'
        from httpserver1.rb:6:in `new'
        from httpserver1.rb:6:in `<main>'

→ポート番号がすでにほかのサービスで使われていて被ってたっぽい。

 

参考:第1回 WEBrickを使ってみよう!