in reply to Re: Dancer2: Create a configuration for testing
in thread Dancer2: Create a configuration for testing

Nice demo Ken! Dancer is cool, isn't it?

I think that the set keyword in the Dancer DSL is intended to be the user-called function that wraps the Role method. I updated your example to use

set 'my_stuff' => {X => 'newX', Y => 'newY'};
... which is how I code my own D2 apps, as shown in the main doc, and it worked the same.

Hope this helps!


The way forward always starts with a minimal test.

Replies are listed 'Best First'.
Re^3: Dancer2: Create a configuration for testing
by kcott (Archbishop) on Jan 06, 2021 at 14:38 UTC

    ++ Thanks for the generous feedback.

    As I indicated, that was my first Dancer2 code; although, I do have some minimal experience with Dancer, so it wasn't completely foreign to me. I appreciate the heads-up re set vs. setting.

    I did an additional test, using config and set (instead of the two setting() calls) and adding an actual config file.

    Code change:

    get '/my_stuff' => sub { my $my_stuff = config->{my_stuff} || {}; my $x = $my_stuff->{X} || 'not set'; my $y = $my_stuff->{Y} || 'not set'; return "X[$x] Y[$y]"; }; get '/my_new_stuff' => sub { set my_stuff => {X => 'newX', Y => 'newY'}; return 'New stuff configured.'; };

    New config file (in the same directory as the code):

    $ cat config.yml my_stuff: { X: 'oldX' }

    Test:

    $ curl http://localhost:3000/my_stuff X[oldX] Y[not set] $ curl http://localhost:3000/my_new_stuff New stuff configured. $ curl http://localhost:3000/my_stuff X[newX] Y[newY]

    I suspect that's a bit closer to what the OP wants: we'll have to wait and see.

    — Ken