सिनात्रा - रैक क्लासेस ओवरराइडिंग - रूबी, सिनात्रा, रैक

मेरे पास एक छोटी सी सिनात्रा परियोजना है जहां मुझे ओवरराइड करने की आवश्यकता है 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 लेकिन यह बिल्कुल काम नहीं करता ... इस पर सिनात्रा मानक क्या है?

उत्तर:

उत्तर № 1 के लिए 1

मैं सिनात्रा में इसके लिए "मानक" नहीं मानता हूं। लेकिन यह करना मुश्किल नहीं होना चाहिए।

सबसे सरल चीज जो आप कर सकते हैं वह एक है rack_overrides.rb और आपके लिए इसकी आवश्यकता है app.rb

सिनात्रा ऑटो लोडिंग जैसी सुविधाओं के साथ नहीं आती है (जैसे रेल करता है), इसलिए यह जादूगर रूप से चीजों को नहीं उठाता है lib/ या अन्य निर्देशिकाएं।

ओह, और जिज्ञासा से बाहर: आपको ओवरराइड करने की आवश्यकता क्यों है Rack::Auth::Basic#valid??


संबंधित सवाल
सबसे लोकप्रिय