[Catalyst-dev] Proposal for new module: Catalyst::Plugin::Memory
Ash Berlin
ash_cpan at firemirror.com
Wed Oct 8 14:37:39 BST 2008
On 8 Oct 2008, at 13:28, Simon Bertrang wrote:
> Hi,
> i need a way to save various kinds of information between different
> points in the request chain.
> Initially i abused the stash for this, but polluting the template with
> data not needed there or even worse, preventing things to work as
> expected, did not work out.
> The session would have been another solution but the same arguments
> apply there as for the templates.
>
> What was left:
> a) accessing $c manually to hand over the data
> b) implement a controller providing a common method
> c) writing a plugin
>
> I decided for the plugin as i need access to this data from many
> points
> in our applications (the controllers as well as the models use
> this information).
> So what i'm now proposing is the module Catalyst::Plugin::Memory which
> is mostly identical with the stash, except that it isn't the stash.
> It allows me to capture arguments out of the chains, use them at later
> points in the chain and access them from forwarded methods.
>
> I've attached the code i've written so far but it's not done yet. A
> few
> tests are to be written as also as documentation.
>
> But what do you think? Is it conceptually ok, do you disagree with
> the
> name (suggestions welcome) or are there any other comments i should
> take
> into account before i finish and upload this?
>
> Kind regards,
> Simon
General idea of not polluting the stash/session is good imo.
However I'm not sure what you want needs to be anything more than a
wiki/cookbook example
in MyApp.pm
use Catalyst;
use base 'Class::Data::Accessor'; # So you can have defaults/override
or local on a per request basis
__PACKAGE__->mk_classaccessors(qw/memory/)
in a controller:
sub foo : Local
{
my ($self, $c) = @_;
$c->memory->{foo} = 1;
}
Unless i've missed something thats basically what your plugin would
end up doing. (Tho my personal preference is to add many such
accessors rather than just one hash, but thats not much different)
-ash
More information about the Catalyst-dev
mailing list