簡體   English   中英

Sinatra-覆蓋機架的類別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM