[英]Sinatra - Overriding Rack Classes
我有一個很小的Sinatra項目,需要覆蓋Rack::Auth::Basic#valid?
。 目前,我已經將此替代放置在應用程序的主文件中,但是隨着事情變得越來越大,這似乎使源變得混亂...
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的標准是什么?
我認為Sinatra對此沒有“標准”。 但這並不難做。
您可以做的最簡單的事情是創建一個rack_overrides.rb
並從您的app.rb
進行要求。
Sinatra不具有自動加載之類的功能(就像Rails一樣),因此它不會神奇地從lib/
或其他目錄中拾取內容。
哦,出於好奇:為什么您需要覆蓋Rack::Auth::Basic#valid?
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.