ラックのインテグレーション

環境ラック

アクションは、ラックの上に構築された高レベルAPIを提供します。私たちは、ラック環境からの生のデータにアクセスする必要がある場合は、私たちが使用することができますparams.env

 

ミドルウェアラック

花見は非常に薄いデフォルトのミドルウェア・スタックを搭載しています。追加コンポーネントは、アプリケーションレベルで、グローバルにマウントされた、またはローカルにすることができます。

 

グローバル・ミドルウェア

我々は、すべてのアプリケーション(下ラップコンポーネントが必要な場合apps/)、我々は編集することができconfig.ru、プロジェクトのルートに。

# config.ru
require './config/environment'
require 'rack/auth/basic'

use Rack::Auth::Basic
run Hanami.app

 

アプリケーションミドルウェア

私たちは(下の特定のアプリケーションでのみ使われている部品が必要な場合apps/)、我々は、アプリケーションの構成に追加することができます。

# apps/web/application.rb
require 'rack/auth/basic'

module Web
  class Application < Hanami::Application
    configure do
      # ...
      middleware.use Rack::Auth::Basic
    end
  end
end

 

アクションミドルウェア

時々、私たちはよく知られているリソースのセットに使用するミドルウェアを必要としています。私たちは、グローバルまたはアプリケーションレベルでそれをマウントした場合、パフォーマンスが低下し始めます。アクションは、私たちはきめの細かいミドルウェア・スタックを実装することができます。

# apps/web/controllers/sessions/create.rb
require 'omniauth'

module Web::Controllers::Sessions
  class Create
    include Web::Action

    use OmniAuth::Builder {
      # ...
    }

    def call(params)
      # ...
    end
  end
end

私たちは、引数を必要と異なるミドルウェアをマウントするには、次の構文を使用することができます。

# apps/web/controllers/dashboard/index.rb
module Web::Controllers::Dashboard
  class Index
    include Web::Action

    use XMiddleware.new('x', 123)
    use YMiddleware.new
    use ZMiddleware

    def call(params)
      # ...
    end
  end
end