セッション

セッションを有効

セッションは花見の用途で使用できますが、デフォルトでは有効になっていません。私たちは、この機能をオンにする場合、我々は単にコードの行のコメントを解除する必要があります。

# apps/web/application.rb
module Web
  class Application < Hanami::Application
    configure do
      # ...
      sessions :cookie, secret: ENV['WEB_SESSIONS_SECRET']
    end
  end
end

最初の引数は、セッションストレージのためのアダプタの名前です。デフォルト値は:cookie使用しています、Rack::Session::Cookie

セッションアダプタの名前が下のクラス名の下線バージョンであるRack::Session名前空間。例::cookieについてRack::Session::Cookie

私たちは、ラックのセッションと互換性の異なるストレージを使用することができます。我々はRedisのを使用したいとしましょう。私たちはバンドルすべきであるredis-rackとアダプタの名前を指定します:redis。花見はアダプタをオートロードすることができ、アプリケーションが起動されたときにそれを使用しています。

カスタムストレージ技術を経由して自動的にロードされていますrequire "rack/session/#{ adapter_name }"

渡された二番目の引数はsessionsされているオプションのハッシュでアダプタに渡されます。私たちは、デフォルトを見つけること:secretが、我々は現在のアダプタによってサポートされているすべての値を指定することができます。

使用法

セッションは、ハッシュのように振る舞う:私たちは、読み割り当て、値を削除することができます。

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

    def call(params)
      session[:b]         # read
      session[:a] = 'foo' # assign
      session[:c] = nil   # remove
    end
  end
end