2013-03-14 3 views
2

У меня есть крошечный проект Sinatra, где мне нужно переопределить Rack::Auth::Basic#valid?. В настоящее время я поместил это переопределение в основном файле для моего приложения, но кажется, что загромождать источник, как все становится все больше ...Sinatra - классы переопределения стойки

require "sinatra/base" 

module Rack::Auth 
    class Basic 
    def valid?(auth) 
     # My overrides go here... 
    end 
    end 
end 

class App < Sinatra::Base 
    use Rack::Auth::Basic, "CustomRealm" do |username, password| 
    # Authentication 
    end 

    get "/" do 
    erb :index 
    end 
end 

Я хотел бы, чтобы переместить переопределение на внешний файл. Моя структура проекта является то вдоль линий

* views 
|------ index.erb 
* config.ru 
* app.rb 
* README.md 
* LICENSE.md 
* Gemfile 
* Gemfile.lock 

Где можно переместить Rack::Auth переопределение, так что я могу использовать их внутри app.rb? Я попытался поставить их на lib/rack/auth/basic.rb, но это не сработало ... Каковы стандарты Sinatra на этом?

ответ

1

Я не верю, что в Синатре есть «стандарт». Но этого не должно быть слишком сложно.

Простейшая вещь, которую вы можете сделать, это создать rack_overrides.rb и потребовать от вашего app.rb.

Sinatra не имеет функций, таких как автонагрузка (например, Rails), поэтому он не волшебным образом забирает вещи от lib/ или других каталогов.

О, и просто из любопытства: зачем вам нужно переопределить Rack::Auth::Basic#valid??

+0

+1. В качестве альтернативы я бы поставил код в 'lib/rack/auth.rb', так как это вы сделали бы, если бы Rack не была внешней библиотекой. – iain

Смежные вопросы