[Dancer-users] dancer2's prototype is there, feedback needed

Assaf Gordon gordon at cshl.edu
Mon Oct 3 19:07:58 CEST 2011


Alexis Sukrieh wrote, On 10/03/2011 12:30 PM:
> 
> 2011/10/3 Assaf Gordon <gordon at cshl.edu>:
>> Changing the template engine to "template_toolkit" simply changes the error message to:
> Yeah, the syntax changed, you should do the following in your config:
> 
> template: "toolkit"
> 
That solved it.

A minor difference (from Dancer 1):
In the "index.tt" template, there's a sidebar which contains:
=====
 <h3>Your application's environment</h3>
       <ul>
                <li>Location: <code>/home/gordon/projects/dancer_test/MyFirstApp</code></li>
                <li>Template engine: <code><% settings.template %></code></li>
                <li>Logger: <code><% settings.logger %></code></li>
                <li>Environment: <code><% settings.environment %></code></li>
            </ul>
=====

With Dancer 1, the output is :
===
Your application's environment
    Location: /home/gordon/projects/dancer_test/MyFirstApp
    Template engine: simple
    Logger: console
    Environment: development
===

With Dancer 2, the output is:
===
Your application's environment

    Location: /home/gordon/projects/dancer_test/MyFirstApp
    Template engine: Dancer::Template::Toolkit=HASH(0x188dcb8)
    Logger: Dancer::Logger::Console=HASH(0x1602758)
    Environment:
===

That is - with the "HASH(0x188dcb8)" part of the engine & logger objects.
Also - it seems "environment" is not set, but perhaps that's another (updated) configuration option that I'm missing.


> 
> [...]
>> Problem 2:
>> Cannot combine a prefix (/testme) with a regular expression ((?-xism:.*)) at (eval 72) line 74
> 
> Hmm, this looks to be a regression, but can you make sure it actuallt
> works under Dancer1 ?
> 
Yes, it works with Dancer1.

Here's how to reproduce:
=========

##
## Create a new application
##
$ dancer -a d2test4
[...]
$ cd d2test4/

##
## Add a "prefix" statement
##
$ sed -i '6iprefix "/testme";' lib/d2test4.pm 

##
## show the updated application
##
$ cat lib/d2test4.pm 
package d2test4;
use Dancer ':syntax';

our $VERSION = '0.1';

prefix "/testme";
get '/' => sub {
    template 'index';
};

true;


##
## Run with Dancer 1
##
$ ./bin/app.pl 
[15837]  core @0.000008> loading Dancer::Handler::Standalone handler in /usr/local/share/perl/5.12.4/Dancer/Handler.pm l. 41
[15837]  core @0.000163> loading handler 'Dancer::Handler::Standalone' in /usr/local/share/perl/5.12.4/Dancer.pm l. 366
>> Dancer 1.3072 server 15837 listening on http://0.0.0.0:3000
== Entering the development dance floor ...
[15837]  core @0.000123> request: GET /testme/ from 127.0.0.1 in /usr/local/share/perl/5.12.4/Dancer/Handler.pm l. 52
[15837]  core @0.000502> [hit #1]trying to match `/testme/' against /(?-xism:^(?-xism:^\/testme(?:\/)?$)$)/ in /usr/local/share/perl/5.12.4/Dancer/Route.pm l. 78
[15837]  core @0.000641> [hit #1]  --> got 1 in /usr/local/share/perl/5.12.4/Dancer/Route.pm l. 95
[15837]  core @0.006332> [hit #1]response: 200 in /usr/local/share/perl/5.12.4/Dancer/Handler.pm l. 167
^C

##
## Run with Dancer 2
##
$ perl -I /home/gordon/sources/dancer2/lib ./bin/app.pl 
core: binding app to main
core: binding app to d2test4
core: [d2test4] running 'prefix' with /testme
core: [d2test4] running 'get' with /, CODE(0x2b082b8)
core: [d2test4] running 'true' with 
core: [main] running 'dance' with 
Cannot combine a prefix (/testme) with a regular expression ((?-xism:.*)) at (eval 72) line 74
======


I did not change the "config.yml" file with the correct template syntax, but I assume it is not relevant for this behavior.


-gordon


More information about the Dancer-users mailing list