我有一个很小的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的标准是什么?
答案 0 :(得分:1)
我不相信Sinatra有这个“标准”。但这不应该太难。
您可以做的最简单的事情是创建一个rack_overrides.rb
并要求app.rb
。
Sinatra没有像自动加载这样的功能(就像Rails一样),因此它不会从lib/
或其他目录中神奇地拾取内容。
哦,只是出于好奇:为什么你需要覆盖Rack::Auth::Basic#valid?
?