2011-06-22 43 views
0

有誰能告訴我爲什麼我在撥打/admin路線時得到NameError - uninitialized constant Sinatra::DefaultSinatra授權分機:NameError

require "sinatra" 
require "sinatra/authorization" 

set :authorization_realm, "Protected zone" 

helpers do 
    def authorize(login, password) 
    login == "admin" && password == "secret" 
    end 
end 

get "/" do 
    "Welcome to the public zone" 
end 

get "/admin" do 
    login_required 
    "Welcome to the protected zone" 
end 

我使用Ruby 1.9.2,1.2.6西納特拉和Sinatra Authorization Extension

UPDATE:OK,我已經找到了問題的根源在以下文件的第25行:

sinatra-authorization-1.0.0/lib/sinatra/authorization.rb

原始項目的This fork通過與settings.authorization_realm更換Sinatra::Default.authorization_realm解決的問題第25行。這解決了這個問題,但我不明白爲什麼。任何人都可以向我解釋?

+1

它解決了問題,因爲Sinatra不再有'Default'類。如果你想訪問一些使用':set'定義的設置,你應該使用'settings.' –

+0

謝謝!把這個評論作爲答案,我會將其標記爲解決方案。 – Javier

回答

2

它解決了問題,因爲Sinatra沒有Default類。如果你想訪問一些使用:set定義的設置,你應該使用settings.