拦截WEBrick请求

问题描述:

我有一个网络应用程序,运行在不同的硬件上,大部分由智能电视和机顶盒组成。拦截WEBrick请求

我的web应用程序包含一个ruby脚本来设置本地调试应用程序。该脚本构建我的应用程序,侦听文件更改,并使用简单的WEBrick服务器托管应用程序。

现在我遇到了一个特定的硬件问题。这个硬件希望在POST请求加载Web应用程序之前,获得成功响应,该请求是在与Web应用程序相同的主机上运行的health_check API。

我只是希望截获这个请求并欺骗它,以便硬件加载我的客户端。到目前为止,我就得到了,因为这:

def start_server 
    require 'webrick' 

    root = File.expand_path 'public' 
    request_callback = Proc.new { |req, res| 
     if req.path =~ /health_check/ 
      # return 200 response somehow? 
     end 
    } 
    server = WEBrick::HTTPServer.new :Port => 5000, :DocumentRoot => root, :RequestCallback => request_callback 
    server.start 
end 

我可以修改响应对象将状态设置为200,但它最终还是返回404

你并不需要“拦截“所有请求并检查特定路径。你只需要mount_proc,以处理一个具有proc的特定路线。

server.start之前添加以下内容:

server.mount_proc '/health_check' do |req, res| 
    res.body = 'what what' # your content here 
end 

你可能想在检查这个包裹,以确定如果你在任何自定义硬件要求这种行为运行。

请参阅WEBrick文档中的Custom Behavior