How can I deny a DB access in a view?
Here is an example code. DBIx::Tracer can hook the DB access in a lexical context.
package MyApp::Web;
use DBIx::Tracer;
sub render {
my ($c, $tmpl, $vars) = @_;
my $tracer = $ENV{IN_DEBUGGING} ? DBIx::Tracer->new(
sub {
my %args = @_;
my $sql = $args{sql};
die "Do not execute query in a view: $sql";
}
) : undef;
return $c->SUPER::render($tmpl, $vars);
}
Why do I need to deny it?
- Designer can execute a lot of queries.
- It makes debugging hard.
- It makes NYTProf hard.
Published: 2012-11-09(Fri) 10:20