尝试模块化方式时 sinatra 'namespace' 不工作

sinatra 'namespace' not working when trying modular way

这是我的代码,但 'namespace' 没有使用,如果我在没有命名空间的情况下编写它可以工作,如果我删除 class 声明并执行,它也可以与 'namespace' 一起工作直接.

require 'sinatra'
require 'sinatra/namespace'

     class MyApp < Sinatra::Base
        namespace "/v1" do
          get "/" do
          "Hello World!"
          end  
        end
      end

1: 来自 test1.rb:4:in <main>' test1.rb:5:in': MyApp:Class (NoMethodError)[= 的未定义方法“命名空间” 13=]

基于Sinatra documentation您需要注册扩展:

require 'sinatra'
require 'sinatra/namespace'

class MyApp < Sinatra::Base
    register Sinatra::Namespace

    namespace "/v1" do
        get "/" do
            "Hello World!"
        end  
    end
end