我是Ruby的新手,我可以找到這個問題上的各種變化的答案,但不是我的問題本身的答案。Ruby,Sinatra,重寫/從一個單獨的文件擴展一個類來添加一個方法
我正在寫一個應用程序,它需要基本的身份驗證的細節,並使用它們來驗證用戶與第三方平臺,因此我需要能夠訪問密碼,以便通過它但我也想能夠使用機架認證類
所有我想做的事情是這樣的:
require 'rack/auth/abstract/request'
require 'rack/auth/basic'
class AuthRequest < Rack::Auth::Basic::Request < Rack::Auth::AbstractRequest
def password
credentials[1]
end
end
如果我使用Request < Auth::AbstractRequest
的IDE告訴我,我有undeclare不變,但由於它上面說,如果我完全限定它'錯誤的參數類型真(預期的類)(TypeError)'
我讀了包括this在內的各種文章,但我並不困惑,我認爲這個問題源自於我試圖從這個外部文件擴展一個子類,而不是它的根類。
什麼是正確的方法來做到這一點?
編輯 - 對我的要求更多一些的信息: 我此基礎上需要從西納特拉文檔此樣本。我想對於像provided?
和basic?
的正派的@auth
對象,但我不能簡單地做這樣@auth.credentials == ['admin', 'admin']
一比較,我需要訪問密碼,這是不是在默認實現
helpers do
...
def authorized?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
@auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['admin', 'admin']
end
end
之前試圖覆蓋任何東西,我建議你閱讀有關約[傳承](HTTP的基礎知識:// ruby- Ruby中的doc.org/core-2.1.1/doc/syntax/modules_and_classes_rdoc.html#label-Defining+a+class)。你認爲'class AuthRequest
toro2k
這就是我上面解釋的 - 我的AuthRequest類應該繼承Request Class。你的鏈接似乎支持這個想法'類MySubclass