[Dancer-users] why does "warn" fail?

Flavio Poletti polettix at gmail.com
Tue Jan 25 23:56:48 CET 2011


Hi,

    there is a bug in Dancer::Route that seems to be triggered only when
plackup's Shotgun is active (don't ask me why, there's surely a good
reason). There is pull request https://github.com/sukria/Dancer/pull/264 to
solve it, if the dev team accepts it you'll find the problem solved at the
next release.

In the meantime, if you feel like changing the code by yourself, you can
apply the patch by yourself: it's a matter of changing one single word. Of
course you'll get the error about "warn" when you run the application in the
development environment, but this is the expected behaviour as discussed.

Cheers,

    Flavio.





On Sun, Jan 23, 2011 at 9:08 AM, Brian E. Lozier <brian at massassi.com> wrote:

> $VERSION   = '1.2003';
>
> Looks like I'm using 1.2003.
>
> Thanks for your detailed reply, I appreciate it.
>
> On Sat, Jan 22, 2011 at 12:53 PM, Flavio Poletti <polettix at gmail.com>
> wrote:
> > Hi,
> >    there are different topics involved here.
> > The first one regards the version of Dancer you're running. I tried to
> start
> > a sample application with "dancer -a Whatever" and added a warn call in
> the
> > only route handler, but did not get your error. I ran my example with
> Dancer
> > 1.2002 and the result was the error I expected, which leads us to the
> > following point.
> > The second topic deals with warnings promoted to fatal errors. This is
> > triggered by the "warnings" setting, whose documentation is in
> > Dancer::Config. This setting is enabled by default in the "development"
> > environment, so you should turn this off to get rid of the errors. From
> what
> > I understood, this is meant to be a useful feature to ensure that you
> don't
> > get warnings from modules, etc. which you might want to catch as soon as
> > you're in the development process.
> > About your muscle memory, if you want to use "warn" instead of "warning"
> I
> > think that your best option is to propose a patch which I suppose could
> be
> > developed along the following lines:
> > * read how to contribute to the project
> > in
> https://github.com/sukria/Dancer/blob/devel/lib/Dancer/Development.pod
> > * add a configuration option "warn_as_warning" in lib/Dancer/Config.pm
> > * use this configuration option in lib/Dancer/Route.pm subroutine
> "execute"
> > like this:
> > # -------------------------------------
> >  sub execute {
> >      my ($self) = @_;
> >
> > -    if (Dancer::Config::setting('warnings')) {
> > +    if (Dancer::Config::setting('warn_as_warning')) {
> > +      local $SIG{__WARN__} = \&Dancer::Logger::warning;
> > +      return $self->code->();
> > +    }
> > +    elsif (Dancer::Config::setting('warnings')) {
> >          my $warning;
> >          local $SIG{__WARN__} = sub { $warning = $_[0] };
> >          my $content = $self->code->();
> > # -------------------------------------
> > * write tests
> > Anyway, separating how you send warnings in your web application from how
> > you (or others) do that in the modules you use might be very useful to
> > detect problems early... a good reason to teach something new to your
> muscle
> > memory!
> > Cheers,
> >     Flavio.
> >
> >
> >
> > On Sat, Jan 22, 2011 at 2:08 AM, Brian E. Lozier <brian at massassi.com>
> wrote:
> >>
> >> As a perl veteran I am used to using the built-in "warn" function to
> >> write to STDERR.  Under mod_perl/Apache this prints to the web
> >> server's error log.  Using my dancer app like this:
> >>
> >> plackup -L Shotgun app.pl
> >>
> >> If I have a "warn" anywhere in my app, I get an error message:
> >>
> >> Error trace
> >>
> >> status code needs to be an integer greater than or equal to 100 at
> >> /usr/local/lib/perl5/site_perl/5.12.2/Plack/Middleware/StackTrace.pm
> >> line 27
> >>
> >> However, if I print STDERR "msg"; that works.  My question is: what
> >> happened to warn?  Can it be fixed so that it writes to STDERR instead
> >> of triggering an error message?
> >>
> >> I know about the "warning" function but it's really hard to change 10
> >> years of muscle memory!
> >>
> >> Thanks,
> >> Brian
> >> _______________________________________________
> >> Dancer-users mailing list
> >> Dancer-users at perldancer.org
> >> http://www.backup-manager.org/cgi-bin/listinfo/dancer-users
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.backup-manager.org/pipermail/dancer-users/attachments/20110125/eeea18cf/attachment.html>


More information about the Dancer-users mailing list