WEBrick을 이용하여 간단한 Ruby 웹 서버 만들기

예전에 Ruby on Rails를 다루면서 알게된 webrick 웹서버 모듈입니다. 이 모듈은 쉬운 방법으로 웹 서버를 구성할 수 있도록 지원하는 좋은 모듈이지요.

gem을 통해 쉽게 설치가 가능합니다.

gem install webrick

require로 해당 모듈을 불러온 후 WEBrick 하단 메소드를 이용하여 웹서버를 구성할 수 있습니다. 일단 httpt서버 기준으로 HTTPServer를 이용하여 구성이 가능합니다.

WEBrick::HTTPServer의 new 메소드를 통해 Bind할 Address와 Port 등을 지정한 후 웹 서버를 생성합니다.

server = WEBrick::HTTPServer.new({:BindAddress => '127.0.0.1',
                                  :Port => 4040})

그리고 생성된 서버 객체에 mount 메소드를 통해 각각 페이지와 연동될 디렉토리 or 행위를 매핑해줍니다.

server.mount('/', WEBrick::HTTPServlet::FileHandler, Dir.pwd+"/Public_html",
                    {:FancyIndexing => true})

위 방법으로는 GET / 접근 시 FileHandler를 통해 Dir.pwd(현재 실행 디렉토리) 하단 Public_html 폴더로 넘어가도록 설정하는 코드입니다. 파일로 매핑하지 않고 직접 코드를 작성하는 방법도 있습니다.

server.mount_proc '/' do |req, res|
  res.body = 'Hello, world!'
end

이외에도 쉽게 Proxy 환경 등 여려가지 웹 환경을 구성할 수 있습니다. 자세한 내용은 ruby-doc 참고햐시면 도움될 것 같습니다.

http://ruby-doc.org/stdlib-2.0.0/libdoc/webrick/rdoc/

require 'webrick'
server = WEBrick::HTTPServer.new({:BindAddress => '127.0.0.1',
                                  :Port => 4040})
server.mount('/', WEBrick::HTTPServlet::FileHandler, Dir.pwd,
                    {:FancyIndexing => true})
server.mount_proc '/test' do |req, res|
  res.body = 'CODEBLACK / TEST'
end
trap(:INT){server.shutdown}
server.start

Reference