Alex Mestiashvili wrote, On 11/10/11 11:47:
On 11/10/2011 04:53 PM, Philippe Bruhat (BooK) wrote:
On Thu, Nov 10, 2011 at 02:39:14PM +0100, Alex Mestiashvili wrote:
using spaces solved the problem . So I think that it will be not bad to mention somewhere in the documentation that tabs shouldn't be used in config.yml .
I agree and after all I learned something new, but Dancer positions itself like "Dead Simple" and imho it won't hurt to have a line stating that config.yml should use YAML syntax . Such obvious fact that .yml means man YAML wasn't clear for me .
I couldn't agree more. The YAML-related Dancer error message is anything but "dead simple" (it is very perlish-wise informative, though). It took me a long time to understand what's wrong, way too much time compare to the minor offense of a single tab. Here's the error I get in current Dancer due to Tab in "config.yml": ==== Use of uninitialized value in subtraction (-) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 726, <$IN> line 1. Use of uninitialized value in numeric eq (==) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 361, <$IN> line 1. Use of uninitialized value in numeric eq (==) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 361, <$IN> line 1. Use of uninitialized value in numeric eq (==) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 361, <$IN> line 1. Use of uninitialized value in substitution (s///) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 331, <$IN> line 1. Use of uninitialized value in substitution (s///) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 338, <$IN> line 1. Use of uninitialized value in substitution (s///) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 342, <$IN> line 1. Use of uninitialized value in substitution (s///) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 407, <$IN> line 1. Use of uninitialized value in substitution (s///) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 407, <$IN> line 1. Unable to parse the configuration file: /home/gordon/projects/perl_dancer_test/badyaml/config.yml: YAML Error: Invalid element in map Code: YAML_LOAD_ERR_BAD_MAP_ELEMENT Line: 27 Document: 1 at /usr/local/share/perl/5.12.4/YAML.pm line 36 at /usr/local/share/perl/5.12.4/Dancer/Config.pm line 204 Dancer::Config::load_settings_from_yaml('/home/gordon/projects/perl_dancer_test/badyaml/config.yml') called at /usr/local/share/perl/5.12.4/Dancer/Config.pm line 181 Dancer::Config::load('Dancer::Config') called at /usr/local/share/perl/5.12.4/Dancer.pm line 230 Dancer::import('Dancer') called at ./bin/app.pl line 2 main::BEGIN() called at /usr/local/share/perl/5.12.4/Dancer.pm line 2 eval {...} called at /usr/local/share/perl/5.12.4/Dancer.pm line 2 BEGIN failed--compilation aborted at ./bin/app.pl line 2. ==== As a Dancer newbie, it takes some time to find the only relevant message in the middle of this mess: "unable to parse the configuration file". Perhaps something like this minor change would be friendlier ? https://github.com/agordon/Dancer/commit/f3aea9d810b9f08d34946a1acc657e78686... The error message would then become: ===== Use of uninitialized value in subtraction (-) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 726, <$IN> line 1. Use of uninitialized value in numeric eq (==) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 361, <$IN> line 1. Use of uninitialized value in numeric eq (==) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 361, <$IN> line 1. Use of uninitialized value in numeric eq (==) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 361, <$IN> line 1. Use of uninitialized value in substitution (s///) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 331, <$IN> line 1. Use of uninitialized value in substitution (s///) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 338, <$IN> line 1. Use of uninitialized value in substitution (s///) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 342, <$IN> line 1. Use of uninitialized value in substitution (s///) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 407, <$IN> line 1. Use of uninitialized value in substitution (s///) at /usr/local/share/perl/5.12.4/YAML/Loader.pm line 407, <$IN> line 1. YAML Error: Invalid element in map Code: YAML_LOAD_ERR_BAD_MAP_ELEMENT Line: 27 Document: 1 at /usr/local/share/perl/5.12.4/YAML.pm line 36 Error in configuration file: /home/gordon/projects/perl_dancer_test/badyaml/config.yml Please ensure it is a valid YAML file. BEGIN failed--compilation aborted at ./bin/app.pl line 2. ===== It's still too verbose (couldn't find a way to disable YAML's warnings, and the "BEGIN failed" is there to stay) - but at least it's easier to read. -gordon