[Dancer-users] User-friendly errors on YAML parsing failures (was: Re: dancer croaking with a strange error in config.yml)

Daniel Perrett dperrett at cambridge.org
Mon Nov 14 18:51:04 CET 2011


Is indenting with tabs a problem specific to Dancer users? I would say 
not, unless we count "not knowing YAML" as a likely property of Dancer 
users

Therefore, I would think if it is worth implementing this, it is worth 
doing so in the YAML module. 

If "not knowing YAML" is a likely property of Dancer users, then updating 
the documentation would seem a simpler solution than writing a custom 
error checker feature. 

Interestingly, the documentation already states that config.yml is a YAML 
file. 

Config.pm currently reads:

A better way of defining settings exists: using YAML file. For this to be
possible, you have to install the L<YAML> module. If a file named 
B<config.yml>
exists in the application directory, it will be loaded, as a setting 
group.

It could read (note "a YAML file" on first line):

A better way of defining settings exists: using a YAML file. For this to 
be
possible, you have to install the L<YAML> module. If a file named 
B<config.yml>
exists in the application directory, it will be loaded, as a setting 
group.
If the file exists but is not valid YAML (for example, if it contains 
unquoted 
tab characters or does not end in a new line), YAML - and Dancer - will 
die.

As an aside, I don't understand the phrase "as a setting group". Is it a 
group of settings or a group which is setting something else? Does the 
group have an identity of some kind, distinct from other setting groups 
(if so, how is it accessed?), or is it simply an anonymous list of 
key/value pairs which will be mixed in with other settings?

Are there restrictions on the YAML files which are accepted - e.g. do they 
need to evaluate to a hash-like structure or an array-like structure? (I'm 
guessing hash)

What is the priority of settings loaded through config.yml - are they 
overwritten by 'set' commands executed after "use Dancer;"? (I'm guessing 
'yes')

Daniel



From:   David Precious <davidp at preshweb.co.uk>
To:     brian at massassi.com
Cc:     dancer-users at perldancer.org
Date:   14/11/2011 16:27
Subject:        Re: [Dancer-users] User-friendly errors on YAML parsing 
failures        (was: Re: dancer croaking with a strange error in 
config.yml)
Sent by:        dancer-users-bounces at perldancer.org



On Monday 14 November 2011 16:16:29 Brian E. Lozier wrote:
> On Mon, Nov 14, 2011 at 8:11 AM, David Precious <davidp at preshweb.co.uk> 
> > Also, if the parsing failed, open config.yml and skim over it, and 
report
> > any lines which included tabs, with the line number.
> > 
> > This would be a fairly small amount of code, and would only come into
> > play if the parsing of config.yml failed (in which case, the app is
> > unlikely to start anyway, so it's not like it's extra complexity /
> > expense in the majority of cases).
> 
> It seems like it would be better to contribute to the YAML module
> itself so it could report errors like this, as opposed to doing
> post-processing on an already-failed file. 

Hmm, yeah, that could make sense - although I think YAML.pm is to be 
replaced 
with essentially YAML::Any at some point.  Getting all the parsers to 
output a 
friendly message is likely harder than just outputting a fairly generic 
message ourselves.

We could have the message refer to an FAQ entry which lists various common 

mistakes in YAML for more details, perhaps.

> Also, aren't tabs allowed
> inside quoted values?  By the time you take into account all the valid
> possibilities, you will have rewritten a YAML parser.

Yeah, that's why I mentioned earlier in the message "look for any tabs in 
the 
file (before any non-whitespace chars)" - yes, tabs within quoted values 
should be valid, so I'd look only for e.g. /^\s*\t/ or similar.
 
Cheers

Dave P

_______________________________________________
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/20111114/f32e657c/attachment-0001.htm>


More information about the Dancer-users mailing list