What Pedro said works joining multiple apps in one. More info
here.<http://search.cpan.org/~xsawyerx/Dancer2-0.09/lib/Dancer2/Cookbook.pod#Running_multiple_apps_with_Plack::Builder>Thank
you!

I have some issues with how each application locates resources. It seems
that both are using the same paths for libraries or views.

Suppose the next structure:

pathX
 |__app1
 |__app2

cd pathX

*plackup -a app.psgi *
Error while loading pathX/app.psgi: Can't locate App1.pm in @INC ....

*plackup -I app1/lib -I app2/lib app.psgi *
Route exception: pathX/views/index.tt is not a regular file or reference...

How can I establish different environments (and paths) for each app?.

Although this could be very useful, it's not the best solution when you
want to keep one server with multiple and isolated apps (of different
developers/teams).

Anyway, thank you!.


2013/9/18 Pedro Melo <[email protected]>

> Hi,
>
> On Tue, Sep 17, 2013 at 10:36 AM, Juan José 'Peco' San Martín <
> [email protected]> wrote:
>
>> I have 2 different Dancer apps (app1 and app2). Each one working very
>> well on different servers under Apache and Plack::Handler::Apache2.
>>
>> Now, I would like put both applications in just one server, so I adjusted
>> the Apache config just adding the two Location sections.
>>
>> If I use the first app, everything works, but when I try the second one,
>> it seems that Dancer2 (with Plack::Handler::Apache2) still looks for the
>> paths of the first app (so it fails because it can not find my app2
>> modules).
>>
>> Example (how to reproduce the behaviour)
>>
>> 0) Dancer 2.06
>>
>> 1) Adjust Apache config to add the Locations of the two apps
>>
>> # Apache location
>> <Location /app1>
>>     SetHandler perl-script
>>     PerlHandler Plack::Handler::Apache2
>>     PerlSetVar psgi_app /path/app1/bin/app.pl
>> </Location>
>>
>> <Location /app2>
>>    SetHandler perl-script
>>    PerlHandler Plack::Handler::Apache2
>>    PerlSetVar psgi_app /path/app2/bin/app.pl
>> </Location>
>>
>> 2) Try app1 => it works!
>>
>> 3) Try app2 => fails with the next message: Error while loading /app2/
>> app.pl: Can't locate App2.pm in @INC (@INC contains /path/app1/lib/
>> /usr/local....)
>>
>> Where App2 is the main module at (app2/lib/) called from 
>> app2/bin/app.plafter use Dancer2.
>>
>
> Try this: create a merged.psgi file with this content:
>
> use Plack::Builder;
> use App1;
> use App2;
>
> builder {
>   mount '/app1' => App1->dance;
>   mount '/app2' => App2->dance;
> };
>
>
> And then use it on Apache with:
>
> <Location />
>
>     SetHandler perl-script
>     PerlHandler Plack::Handler::Apache2
>     PerlSetVar psgi_app /path/to/merged.psgi
> </Location>
>
> I have not tested this, I don't have a mod_perl2 at hand anymore, but it
> should work.
>
> Bye,
> --
> Pedro Melo
> @pedromelo
> http://www.simplicidade.org/
> xmpp:[email protected]
> mailto:[email protected]
>
> _______________________________________________
> dancer-users mailing list
> [email protected]
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>
>
_______________________________________________
dancer-users mailing list
[email protected]
http://lists.preshweb.co.uk/mailman/listinfo/dancer-users

Reply via email to