覆盖先前实例化的新路由

时间:2012-12-03 15:05:42

标签: ruby rack rackup

我必须遗漏Rack的non-existant文档中的内容:)我正在尝试向ruhoh添加其他网络服务路由,并且可以让它们在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

1 个答案:

答案 0 :(得分:0)

在您使用它的方式中,run Ruhoh::Program.preview将永远不会为请求提供服务。

你应该把它放到建设者:

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