2016-04-11 37 views
2

有一個代碼示例來自Sinatra:啓動並運行(示例4-22)。當我嘗試運行它時,給出了以下結果:stack level too deepSinatra:疊層太深

require 'sinatra/base' 

class ApplicationController < Sinatra::Base 
    def self.inherited(sublass) 
    super 
    use sublass 
    end 
    enable :logging 
end 

# works with dynamically generated applications, too 
Sinatra.new ApplicationController do 
    get '/' do 
    "See the <a href='/example'>example</a>." 
    end 
end 
ApplicationController.run! 

事實上,這個代碼看起來錯誤的,因爲新的應用程序擴展的AppController當AppController的use應用它會永遠復發。

那麼如何做到這一點的權利?

回答

0

嘗試這樣:

class SinatraApp < Sinatra::Base 
    get '/' do 
    "See the <a href='/example'>example</a>." 
    end 
end 

run SinatraApp.new 
+0

我想在這裏的竅門是「自動撿子類中間件」。 –