1

但是,我正在尝试在 Rack 中设置一个基本的路由系统。我不明白为什么第一个路由('/')有效,而第二个('/help')无效。在“/help”的情况下返回的是 NoMethodError。为什么会这样,我该如何解决?谢谢你。

require 'rack'

class MyApp
  def self.call(env)
    new.call(env)
  end

  def self.get(path, &block)
    @@routes ||= {}
    @@routes[path] = block
  end

  def call(env)
    dup.call!(env)
  end

  def call!(env)
    @req = Rack::Request.new(env)
    @res = Rack::Response.new
    @res.write route(@req.path)
    @res.finish
  end

  def route(path)
    if @@routes[path]
      @@routes[path].call
    else
      'Not Found'
    end
  end

  def to_do(arg)
    arg
  end
end

MyApp.get '/' do
  'index'
end

MyApp.get '/help' do
  to_do 'help'
end

run MyApp
4

0 回答 0