2

オーバーライドする必要がある小さな 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が、それはまったく機能しませんでした... これに関するシナトラの基準は何ですか?

4

1 に答える 1

1

シナトラにはこれに対する「基準」があるとは思えません。しかし、これはそれほど難しいことではありません。

できる最も簡単なことは、 を作成し、rack_overrides.rbからそれを要求することですapp.rb

Sinatra には (Rails のように) 自動読み込みのような機能はありませんlib/

ああ、ただの好奇心から: なぜオーバーライドする必要があるのRack::Auth::Basic#valid?ですか?

于 2013-03-14T21:35:29.890 に答える