Похоже, WEBrick::HTTPServlet::AbstractServlet
уже предлагает соответствующий интерфейс для этого ( Документация ), например,
class DefaultGetHandler < WEBrick::HTTPServlet::AbstractServlet
def initialize(server,default_html)
super(server)
@default_html = default_html
end
def do_GET(request,response)
if request.path.to_s == "/"
response.body = @default_html
end
end
end
Тогда MyServer
становится
class MyServer
def initialize(default_html)
@server = WEBrick::HTTPServer.new(
:Port => 12357,
:DocumentRoot = Dir.pwd
)
@server.mount "/", DefaultGetHandler, default_html
end
end
Это будетпозволит вам избежать всех анонимных определений классов, которые вы создаете прямо сейчас, и обеспечит вам более чистую реализацию вашего пользовательского класса.Вы можете назвать пространство DefaultGetHandler
внутри MyServer
, если хотите сохранить инкапсуляцию, которая у вас есть