NAME
Pantry::Role::Serializable - A role to save/load data to/from JSON files
VERSION
version 0.012
SYNOPSIS
with 'Pantry::Role::Serializable' => {
freezer => '_freeze',
thawer => '_thaw',
};
DESCRIPTION
This parameterizable Moose role provides methods for saving/loading Pantry objects as JSON.
METHODS
new_from_file
my $obj = $class->new_from_file( $path );
Constructs a new object from JSON data found in the given file.
save_as
$obj->save_as( $path );
Stores object data as JSON in a file at the given path location. Attributes with leading underscores are considered "private" and are omitted.
USAGE
Customizing the serialization behavior can be done with the optional freezer
and thawer
role parameters. If either freezer
or thawer
is omitted, data will not be modified during saving/loading (respectively), except that private attributes are always omitted when saving.
freezer
This role parameter takes the name of a method to use for modifying the object data during freezing. It takes a hashref of data representing the object's attributes (excluding any private attributes) and must return a hashref of data which will be serialized as JSON.
thawer
This role parameter takes the name of a method to use for modifying the object data during thawing. It takes a hashref of data deserialized from JSON and must return a hashref of data suitable for passing to the object constructor.
SEE ALSO
MooseX::Storage -- this didn't quite meet my needs as it
mandates a
__CLASS__
key which causes problems when Chef consumes saved data
AUTHOR
David Golden <dagolden@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2011 by David Golden.
This is free software, licensed under:
The Apache License, Version 2.0, January 2004