Good day!

I have a following Dancer + Starman bundle where i have many sites
under one module software (MyModule for example)

Example of my .psgi file

    #!/usr/bin/env perl

    use strict;
    use warnings;
    use utf8;

    BEGIN {
        use Dancer 1.3080 ':syntax';

        setting apphandler => 'PSGI';

        # Loading configs from one location
        Dancer::Config::setting(appdir  => 
"$ENV{MYAPP_ROOTDIR}/etc/dancer/sites");
        Dancer::Config::setting(confdir => 
"$ENV{MYAPP_ROOTDIR}/etc/dancer/sites");
        Dancer::Config->load;

        # Loading configs from other location
        Dancer::Config::setting(appdir  => "$ENV{MYAPP_ROOTDIR}/etc/dancer");
        Dancer::Config::setting(confdir => "$ENV{MYAPP_ROOTDIR}/etc/dancer");
        Dancer::Config->load;
    }


    use MyModule;
    use Plack::Builder;

    my $conf = config->{my_own_settings};

    builder {
        enable sub {
            my $app = shift;

            sub {
                my $env = shift;

                $env->{HTTP_HOST} =~ s/:\d+$//o; # If port of fronend 
differents from backend

                return $app->($env);
            };
        };
        builder {
            my $last;
            foreach my $host ( keys %{$conf->{sites}} ) {
                $last = mount $host => builder {
                    enable "Runtime";
                    sub {
                        my $env = shift;
                        local $ENV{DANCER_APPDIR} = 
"$conf->{sites}{$host}{appdir}";
                        load_app "MyModule";
                        Dancer::App->set_running_app('MyModule');
                        setting appdir => $ENV{DANCER_APPDIR};
                        Dancer::Config->load;
                        my $request = Dancer::Request->new( env => $env );
                        Dancer->dance($request);
                    };
                }
            }
            $last;
        };
    };

And my config of my sites (other config.yml - not main config.yml!) -
$ENV{MYAPP_ROOTDIR}/etc/dancer/sites/config.yml

my_own_settings:
    sites:
        http://app1.home.com/:
            appdir: $$MYAPP_ROOTDIR$$/sites/site1
            database: 'db1'
        http://app2.home.com/:
            appdir: $$MYAPP_ROOTDIR$$/sites/site2
            database: 'db1'

I hope it will help to you

Perlover

2011/11/23 Puneet Kishor <[email protected]>:
> Inspired by the conversation about deploying multiple apps, and the problems 
> with current Dancer version to dispatch the routes correctly, I have a 
> slightly meta question: What exactly is the advantage of launching multiple 
> apps via a single app.psgi file? Here is my motivation --
>
> I have a multitude of different Dancer apps running on my computer (see 
> http://earth-base.org/apps). The issue I face is that they are all in 
> separate directories, and have different layout files even though they are 
> all identical in appearance and most of their functionality. Just like 
> Dancer.pm itself is installed in one location, and any upgrades to it are 
> available to all my apps, I would also like to abstract the views and css and 
> js. For example, I use the html5 boilerplate from 
> http://html5boilerplate.com/ for all my apps. This means if I want to install 
> the latest build of html5 boilerplate, I have to update it for all my apps. 
> How could I make some of the currently app-specific views to be served from a 
> single location? Would the multiple-apps-via-a-single-app.psgi help here?
>
> --
> Puneet Kishor
> _______________________________________________
> Dancer-users mailing list
> [email protected]
> http://www.backup-manager.org/cgi-bin/listinfo/dancer-users
>
>
_______________________________________________
Dancer-users mailing list
[email protected]
http://www.backup-manager.org/cgi-bin/listinfo/dancer-users

Reply via email to