Commit | Line | Data |
8dc58fe2 |
1 | package DBIx::Class::Journal::EvalWrap; |
2 | use base qw(DBIx::Class::Journal); |
3 | |
4 | use strict; |
5 | use warnings; |
6 | |
e0f76f46 |
7 | foreach my $method (qw(journal_log_update journal_log_insert journal_log_delete)) { |
8dc58fe2 |
8 | local $@; |
9 | eval "sub $method " . ' { |
10 | my ( $self, @args ) = @_; |
11 | local $@; |
12 | eval { $self->next::method(@args) }; |
13 | warn $@ if $@; |
14 | }; 1' || warn $@; |
15 | } |
16 | |
17 | __PACKAGE__ |
18 | |
19 | __END__ |
20 | |
21 | =pod |
22 | |
23 | =head1 NAME |
24 | |
25 | DBIx::Class::Journal::EvalWrap - Wrap all journal ops with an eval { } |
26 | |
27 | =head1 SYNOPSIS |
28 | |
29 | __PACKAGE__->journal_component("Journal::EvalWrap"); |
30 | |
31 | =head1 DESCRIPTION |
32 | |
33 | This component is a wrapper for the row methods in L<DBIx:Class::Journal> that |
34 | aides in retrofitting a schema for journaling, by wrapping all the journal CRUD |
35 | operations with a C<local $@; eval { ... }}. |
36 | |
37 | This is desirable if you'd rather lose journal data than create runtime errors |
38 | when retrofitting existing code. |
39 | |
40 | Use with caution. |
41 | |
42 | =cut |
43 | |
44 | |