TITLE

Catalyst::Middleware::Stash - The Catalyst stash - in middleware

DESCRIPTION

We've moved the Catalyst stash to middleware. Please don't use this directly since it is likely to move off the Catalyst namespace into a stand alone distribution

We store a coderef under the PSGI_KEY which can be dereferenced with key values or nothing to access the underly hashref.

SUBROUTINES

This class defines the following subroutines.

PSGI_KEY

Returns the hash key where we store the stash. You should not assume the string value here will never change! Also, its better to use "get_stash" or "stash".

get_stash

Expect: $psgi_env.

Exportable subroutine.

Get the stash out of the $env.

stash

Expects: An object that does env and arguments

Exportable subroutine.

Given an object with a method env get or set stash values, either as a method or via hashref modification. This stash is automatically reset for each request (it is not persistent or shared across connected clients. Stash key / value are stored in memory.

use Plack::Request;
use Catalyst::Middleware::Stash 'stash';

my $app = sub {
  my $env = shift;
  my $req = Plack::Request->new($env);
  my $stashed = $req->stash->{in_the_stash};  # Assume the stash was previously populated.

  return [200, ['Content-Type' => 'text/plain'],
    ["I found $stashed in the stash!"]];
};

If the stash does not yet exist, we initialize one and return that.

METHODS

This class defines the following methods.

call

Used by plack to call the middleware