Despite its popularity WEBrick has gained some notoriety since the code is completely undocumented.

Wikipedia’s WEBrick page

WEBrick is the little web server in the Ruby standard library, and I’ve used it several times when I’ve needed to embed a little server in a project. I noticed a couple of problems in my latest little program: it took a few seconds to start up, and always included a TCPServer Error: Address already in use - bind(2) warning in its startup messages.

After watching this happen a few dozen times, I found solutions to both these annoyances, and they’re here in the hope that someone else will Google their way here: just create your server object like this:

# This fixes the slow startup
Socket.do_not_reverse_lookup = true

# Using :BindAddress to say "bind to all interfaces"
# fixes the address-in-use warning
server = HTTPServer.new(:Port => my_port_number,
:BindAddress => "0.0.0.0")