Hello all,
I wrote a small web application using the awesome Mojolicious framework :)
One of the purposes was to run different profiles of the application based on different config files.
I'm using Gentoo Linux so I decided to use the idea which Gentoo use for init scripts.
I wrote the following:
sub get_config_name {
my $self = shift;
my $exe = $0;
my $fp = File::Spec->rel2abs($exe);
my $base = basename($exe);
my @dir = File::Spec->splitdir($fp);
return File::Spec->catfile($self->home, 'etc', "$base.conf");
}
In this case I was making something like:
cd script
ln -s my_web_app new_instance
And created config file with name: new_instance.conf in "etc" folder.
After that I was running "./script/new_instance daemon" and everything worked as I expected.
Just recently my application grew up a bit and I decided to move to Hypnotoad.
First issue which I met was here (Mojo::Server::Hypnotoad):
# Remember executable and application for later
$ENV
{HYPNOTOAD_EXE} ||= $0;
$0 =
$ENV
{HYPNOTOAD_APP} ||= abs_path
$app
;
Due to the abs_path (which is making readlink inside) wrong application were running.
I've changed a runner a bit:
$ENV{'HYPNOTOAD_APP'} = $app;
But got to another issue (Mojo::Server):
# Clean environment (reset FindBin defensively)
{
local
$0 =
$path
= abs_path
$path
;
So my question is: Is there an intention to use abs_path here instead of File::Spec->rel2abs?
May I expect that Mojo::Server to be patched? Or should I look to another ways of making different instances?
Or maybe you have any suggestions?
p.s. Currently looking into hard links instead of symlinks.
--
Thanks,
cono aka Alex