[Dancer-users] Minimum code required to get Dancer up and running?

Brian E. Lozier brian at massassi.com
Sat Feb 26 18:07:23 CET 2011


Indeed your example works.  I may have left out a crucial bit or two
of information.  First, I am using layouts and it's unclear whether
the 404 was for the layout or the regular template so I added it to
your example.  I put my "eg.pl" in a dir called bin/, I was copying
the layout of the scaffolded test project I had created earlier.  So I
have:

/tmp
/tmp/bin/eg.pl
/tmp/tmpls/test.tt
/tmp/tmpls/layouts/main.tt

and /tmp/bin/eg.pl looks like this:

use Dancer;

set layout => 'main.tt';
set views => 'tmpls';

get '/' => sub {
    template 'test.tt';
};

dance;

It works from /tmp/eg.pl but when put in /tmp/bin I get the 404 error.

To clarify, I just realized that if I do this:

/tmp$ perl bin/eg.pl

It works.  If I do this:

/tmp$ cd bin
/tmp/bin$ perl eg.pl

I get the 404.  Could be this is the desired behavior but as I
mentioned it would be nice to get a meaningful error message in the
log or on the console.

Error 404
Unable to process your query
The page you requested is not available
Powered by Dancer 1.3011

And nothing is printed to development.log nor the console where eg.pl
is running.

On Sat, Feb 26, 2011 at 1:35 AM, sawyer x <xsawyerx at gmail.com> wrote:
> Hi Brian.
>
> I've written just what Flavio suggest, and it works perfectly. No 404's.
> Using relative paths.
>
> My steps:
> 1. go to ~/tmp
> 2. mkdir "tmpls"
> 3. inside "tmpls", create "test.tt" with content "your text: <% text %>"
> 4. inside ~/tmp, create file "eg.pl" with content:
> use Dancer;
>
> set views => 'tmpls';
>
> get '/' => sub {
>     template test => { text => 'hi' };
> };
>
> dance;
> --
>
> Run it, go to http://localhost:3000/, et voila! :)
>
> On Sat, Feb 26, 2011 at 2:56 AM, Brian E. Lozier <brian at massassi.com> wrote:
>>
>> Thanks for the information, I'm running into some problems, see below.
>>
>> On Fri, Feb 25, 2011 at 9:10 AM, Flavio Poletti <polettix at gmail.com>
>> wrote:
>> > 0. You pay only for what you use:
>> >    perl -MDancer -e 'get "/" => sub {return "Hello, World!"}; dance'
>> > 1. There seems to be an undocumented configuration feature that lets you
>> > specify the base directory for templates:
>> >    perl -MDancer -e 'set views => "foo"; get "/" => sub {template
>> > "bar"};
>> > dance'
>> > (this takes foo/bar.tt instead of views/bar.tt), I wonder if this can be
>> > made official and documented.
>>
>> I can't seem to get this to work.  When I use this "set views" as you
>> suggested or views: in the config file, it sets the "views" config to
>> that dir (say, "templates", and I verified this by Dumping the config
>> hash), but I always get 404.  This is problem #1, when I get a 404 I
>> get no detailed information in the logs whatsoever.  I get nothing in
>> development.log actually.  In this case, I know what the problem is
>> (will say it in a second), but it would be really nice if Dancer would
>> tell me somewhere what the problem is.  404 can mean route not found
>> but apparently also view/template not found.  There should be some way
>> to disambiguate this fact.
>>
>> The problem is that it's looking in the wrong place for the
>> "templates" directory.  I don't know where it's looking, but it's not
>> looking in appdir/templates.  If I set views =>
>> '/full/path/to/templates' it works, but if I use what I intend to be a
>> relative directory I just get 404 error messages.  Setting to app_dir
>> . templates works if I set it in the code, but I can't figure out how
>> to use "appdir" in config.yml (I'd rather set it in config.yml than in
>> code).
>>
>> This isn't really a big deal.  My real problem is that we have a
>> function called template which looks in the views directory.  This
>> terminology mismatch is disconcerting.  Since most perl modules call
>> everything templates and the function is named template it seems like
>> the files should be in "templates."  However, if we like the "views"
>> terminology we should just name the function "view" instead.
>>
>> Or figure out what I'm doing wrong with the config :)  I realize this
>> is undocumented behavior and I can't expect it to work.  I'm going to
>> follow the convention and use "views" for now.
>>
>> > 2. No restriction regarding the project directory name, just try it :-)
>> > The
>> > normal startup script is a standard Perl program:
>> > #!/usr/bin/env perl
>> > use Dancer;
>> > use WhateverName::YouLike::ForYour::DancerApplication;
>> > dance;
>> >
>> > Cheers,
>> >     Flavio.
>> >
>> >
>> > On Fri, Feb 25, 2011 at 5:03 PM, Brian E. Lozier <brian at massassi.com>
>> > wrote:
>> >>
>> >> I'm going to do a test implementation of a dancer web app into an
>> >> existing project.  I would like to know the minimum files I need to
>> >> create in order to get it running.  My intention is not to use the
>> >> scaffolding script to create files as 1) it creates a bunch of files I
>> >> don't need [but I don't know which ones are strictly required], 2) it
>> >> creates a directory structure designed to house all my code, but I
>> >> already have a directory structure [that might not match Dancer's
>> >> exactly], and 3) I find scaffolding scripts hide a bunch of
>> >> information that it's really better for me to understand instead of
>> >> gloss over.  I would essentially like to start from scratch.  If there
>> >> is not already documentation on this and I get some feedback here,
>> >> I'll be happy to write a document and submit it back to the list.
>> >>
>> >> I have a couple other questions as well.
>> >>
>> >> 1. Is it possible for me to specify the "templates" directory as
>> >> something other than "views" (we use "template" function in the code,
>> >> it makes more sense to load it from a "templates" directory instead of
>> >> a "views" directory)?
>> >> 2. Is there an in-code restriction that requires me to have the
>> >> directory name of my project (like "myproject") match the name of the
>> >> dancer app module (myproject.pm)?  I ask because it's not perlish to
>> >> have a lower-cased module (like myproject.pm) but I don't want to name
>> >> my directory MyProject because it's annoying to type.  Generally lower
>> >> case module names are reserved for pragmas (like warnings, strict,
>> >> feature, etc.).
>> >>
>> >> Thanks in advance for any help,
>> >> Brian
>> >> _______________________________________________
>> >> Dancer-users mailing list
>> >> Dancer-users at perldancer.org
>> >> http://www.backup-manager.org/cgi-bin/listinfo/dancer-users
>> >
>> >
>> > _______________________________________________
>> > Dancer-users mailing list
>> > Dancer-users at perldancer.org
>> > http://www.backup-manager.org/cgi-bin/listinfo/dancer-users
>> >
>> >
>> _______________________________________________
>> Dancer-users mailing list
>> Dancer-users at perldancer.org
>> http://www.backup-manager.org/cgi-bin/listinfo/dancer-users
>
>


More information about the Dancer-users mailing list