任何人都可以告诉我为什么在拨打NameError - uninitialized constant Sinatra::Default
路线时我会收到/admin
?
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,Sinatra 1.2.6和Sinatra Authorization Extension。
更新:好的,我在以下文件的第25行找到了问题的根源:
sinatra-authorization-1.0.0/lib/sinatra/authorization.rb
原始项目的 This fork通过在第25行用Sinatra::Default.authorization_realm
替换settings.authorization_realm
来解决问题。这解决了问题,但我不明白为什么。任何人都可以向我解释一下吗?
答案 0 :(得分:2)
它解决了这个问题,因为Sinatra不再有Default
类了。如果您想访问使用:set
定义的某些设置,则应使用settings.
。