gpt4 book ai didi

ruby - Sinatra - 覆盖 Rack 类

转载 作者:太空宇宙 更新时间:2023-11-03 16:31:16 25 4
gpt4 key购买 nike

我有一个小型 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?

关于ruby - Sinatra - 覆盖 Rack 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com