Thanks for the hint, I planned looking into it for the past 2 years ;-) We need to do some additional stuff too (like copying a basic config for testing, setup some dirs), so we need our wrapper anyway currently.
+rl On Sat, Oct 18, 2014 at 3:18 PM, [email protected] <[email protected]> wrote: > Why not to use Carton? > carton exec hypnotoad script/my_app.pl > > I recently startet to use a small wrapper script to setup the > environment (including cpan module installation with cpanfile and cpanm) to > allow our jenkins server to perform clean testing of the git master. > > Everything needed apart from already installed system perl is stuffed in > ./local and used with eval `perl -Mlocal::lib=local` to setup the env and > exec the actuall app (in our case prove for testing or hypnotoad for > production serving). > > Works out very well, as also devs can now simply setup a new environment > in one shot. > > Does not fit in every development or deployment process, but for us it > seems to work out for now. > > BR > > +rl > > On Sat, Oct 18, 2014 at 9:12 AM, Jan Henning Thorsen < > [email protected]> wrote: > >> perl -I is not inherited through exec(). You're better off using: >> >> PERL5LIB=$PWD/perl5/lib/perl5 $PWD/perl5/bin/hypnotoad >> >> This way, PERL5LIB is set for the current process and all the sub >> processes started with exec(). Note the $PWD part, which will make sure >> it's set to an absolute path. >> >> On Saturday, October 18, 2014 6:01:15 AM UTC+2, perlpong wrote: >>> >>> This is not a bug-report or a request for help, I am just sharing my >>> experience. >>> >>> I install Mojolicious inside an app-local directory using cpanm's "-L" >>> switch: >>> >>> . >>> |─- perl5/ >>> | |-- bin/ >>> | | |-- hypnotoad >>> | | |-- mojo >>> | | |-- morbo >>> | |-- lib/ >>> | |-- perl5/ >>> | |-- Mojo/ >>> | |-- Mojo.pm >>> | |-- Mojolicious/ >>> | |-- Mojolicious.pm >>> |-- script/ >>> |-- app.pl >>> >>> I run hypnotoad with Perl's "-I" flag to append my local-lib directory >>> to the beginning of @INC: >>> >>> perl -Iperl5/lib/perl5 perl5/bin/hypnotoad ./script/myapp.pl >>> >>> My app logs an error related to Mojolicious: >>> >>> Can't locate object method "every_param" via package >>> "Mojo::Parameters" >>> >>> After investigating I realise that my "global" install of Mojolicious is >>> being loaded instead of my local one. >>> >>> If I dump @INC at the beginning of the hypnotoad script, it produces >>> this: >>> >>> ( >>> "/home/ac/apps/MyApp/perl5/bin/../lib", >>> "perl5/lib/perl5/i686-linux", >>> "perl5/lib/perl5", >>> >>> "/home/ac/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/i686-linux", >>> "/home/ac/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1", >>> "/home/ac/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/i686-linux", >>> "/home/ac/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1", >>> ".", >>> ) >>> ( >>> "/home/ac/apps/MyApp/perl5/bin/../lib", >>> >>> "/home/ac/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/i686-linux", >>> "/home/ac/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1", >>> "/home/ac/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/i686-linux", >>> "/home/ac/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1", >>> ".", >>> ) >>> >>> It appears that the process restarts itself, the second time without my >>> modified @INC. >>> >>> Looking inside Mojo::Server::Hypnotoad, I notice this: >>> >>> $ENV{HYPNOTOAD_EXE} ||= $0; >>> ... >>> # Clean start (to make sure everything works) >>> die "Can't exec: $!" if !$ENV{HYPNOTOAD_REV}++ && !exec >>> $ENV{HYPNOTOAD_EXE}; >>> >>> So my workaround is to manually set the HYPNOTOAD_EXE environment >>> variable: >>> >>> export HYPNOTOAD_EXE="perl -Iperl5/lib/perl5 perl5/bin/hypnotoad" >>> perl -Iperl5/lib/perl5 perl5/bin/hypnotoad ./script/myapp.pl >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Mojolicious" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/mojolicious. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google Groups > "Mojolicious" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/mojolicious. > For more options, visit https://groups.google.com/d/optout. > > > -- > You received this message because you are subscribed to the Google Groups > "Mojolicious" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/mojolicious. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Mojolicious" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/mojolicious. For more options, visit https://groups.google.com/d/optout.
