ruby - 拦截 WEBrick 请求

标签 ruby http rake webrick

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

我的网络应用程序包含一个 ruby​​ 脚本来设置应用程序以进行本地调试。此脚本构建我的应用程序,监听文件更改,并使用简单的 WEBrick 服务器托管应用程序。

现在我在特定硬件上遇到了问题。在加载网络应用程序之前,该硬件期望从对与网络应用程序运行在同一主机上的健康检查 API 的 POST 请求获得成功响应。

我只是希望拦截此请求并对其进行欺骗,以便硬件加载我的客户端。到目前为止,我已经做到了这一点:

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

您可能希望将此包装在一个检查中,以确定您是否在需要此行为的任何自定义硬件上运行。

参见 Custom Behavior在 WEBrick 文档中。

关于ruby - 拦截 WEBrick 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28156938/

相关文章:

javascript - 在javascript中从ruby Controller 调用函数

Java Web 服务器以 JSON 进行响应

java - 从 ajax 发送 POST 方法后出现 404 错误(@ResponseStatus 和 ResponseEntity)

c# - jQuery POST 到 .NET HttpListener 并再次返回

ruby - 任务钩子(Hook)前 rake

ruby-on-rails - 是 rake db :create and rake db:migrate idempotent?

ruby - 无法获得 htmlproof 以接受忽略模式

javascript - 如何在Rails中重写简单的.js页面浏览计数器cookie函数?

mysql - gem 安装 : Failed to build gem native extension (can't find header files)

ruby-on-rails - 如何使用 Rails 设置 cron 作业?