Что на самом деле делает Sinatra :: Base.condition?

Я столкнулся с методом sinatra condition и был озадачен тем, как он работает.

У меня есть фрагмент кода:

def auth user
  condition do
    redirect '/login' unless user_logged_in?
  end
end

Который проверяет, зарегистрирован ли пользователь для определенных маршрутов, пример маршрута:

get '/', :auth => :user do
  erb :index
end

Метод user_logged_in? определен во вспомогательном файле в каталог lib проекта:

def user_logged_in?
  if session[:user]
    @user = session[:user]
    return @user
  end 
  return nil 
end

Итак, вопрос: Как блоку condition известно, что содержится в сеансе [: user] , когда в get '/' маршрутизирует сеанс [: user] даже не был установлен?

Метод condition определен на следующей странице GitHub: метод основного условия sinatra Спасибо.

6
задан LJ. 21 January 2012 в 13:41
поделиться