【问题标题】:New routes overriding previously instantiated覆盖先前实例化的新路由
【发布时间】:2012-12-03 15:05:42
【问题描述】:

我一定是从 Rack 的 non-existant 文档中遗漏了一些东西 :) 我正在尝试向 ruhoh 添加额外的 web 服务路由,并且可以让它们在 localhost:9292/test 工作,但新的 Rack::Builder 对象似乎覆盖最后一个,因为我无法再访问localhost:9292/ 的默认博客。我已经尝试了不同的方法来定义新路线而不声明Rack::Builder.new,但是什么都做不了。

使用此界面添加其他路由的最佳方法是什么?

require 'rack'
require 'ruhoh'

run Ruhoh::Program.preview

# Additional routes

builder = Rack::Builder.new do
  use Rack::CommonLogger
  map '/test' do
    run Proc.new {|env| [200, {"Content-Type" => "text/html"},  StringIO.new("infinity 0.1")] }
  end
end

run builder

【问题讨论】:

    标签: ruby rack rackup


    【解决方案1】:

    以你使用它的方式,run Ruhoh::Program.preview 永远不会处理请求。

    你应该把它放到builder中:

    builder = Rack::Builder.new do
      use Rack::CommonLogger
      map '/' do
        run Ruhoh::Program.preview
      end
    
      map '/test' do
        run Proc.new {|env| [200, {"Content-Type" => "text/html"},  StringIO.new("infinity 0.1")] }
      end
    end
    
    run builder
    

    【讨论】:

    • 我应该提一下,对于 ruhoh 用户,这会丢失静态资产路由。不过,这是另一个问题 :)
    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2021-05-10
    • 2014-05-28
    • 2016-07-12
    • 2018-04-22
    相关资源
    最近更新 更多