Sinatra授权扩展:NameError

时间:2011-06-22 07:54:30

标签: ruby sinatra http-authentication

任何人都可以告诉我为什么在拨打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来解决问题。这解决了问题,但我不明白为什么。任何人都可以向我解释一下吗?

1 个答案:

答案 0 :(得分:2)

它解决了这个问题,因为Sinatra不再有Default类了。如果您想访问使用:set定义的某些设置,则应使用settings.