0

私は自分の環境をプライベートconfig/environments/staging.rbに保つために以下を使用しています。staging

# HTTP Basic Authentication
if ENV['AUTH_BASIC_ON'] == 'true'
  config.middleware.insert_before(ActionDispatch::Static, 'Rack::Auth::Basic', 'Staging') do |username, password|
    [username, password] == [ENV.fetch('AUTH_BASIC_USERNAME'), ENV.fetch('AUTH_BASIC_PASSWORD')]
  end
end

config.middleware.insert_beforeの 3 番目の引数 ( 'Staging')は何ですか? この特定のパラメーターはどのような意味を持ちますか? productionこのコードを(コピーして に貼り付けて) で実行したい場合config/environments/production.rb、このパラメーターを に変更する必要があります'Production'か? に変更するとどうなり'Fubar'ますか?

ドキュメントソースコードでこれを調べてみましたが、説明がありません。また、本で言及されているのを見つけましたが、説明はせいぜい弱いです:

args パラメーターは、R​​ack フィルターの初期化メソッドに渡す属性のオプションのハッシュです。

4

2 に答える 2

2

Rack::Auth::Basicこれは、ミドルウェアによってブラウザーに送信される単なるメッセージです。下のスクリーンショットを見てください:)

ここに画像の説明を入力

于 2014-01-09T20:24:06.043 に答える
0

引数に関するより一般的な詳細:

ドキュメントに記載されているように、それらはミドルウェアまたはフィルターの初期化子に渡される配列ですが、引数が必要かどうか、およびそれらの意味は、呼び出されるコードに依存します。

Rails アプリをデバッグするためのミドルウェアは、単純で不自然な例です。

class MiddlewareDebugger
  def initialize(app, *args)
    @app = app
    @args = args
  end

  def call(env)
    Rails.logger.debug "MiddlewareDebugger #{@args.first}"
    status, headers, body = @app.call(env)
    [status, headers, body]
  end
end

そしてconfig/application.rbに追加するかもしれません

config.middleware.insert_before Rack::Head, "MiddlewareDebugger", "1"
config.middleware.insert_before Rack::ConditionalGet, "MiddlewareDebugger", "2"

MiddlewareDebugger 1Rack::Head のMiddlewareDebugger 2前と Rack::ConditionalGetの前に文字列をログに記録します。

于 2015-12-07T20:23:32.590 に答える