Mojo::Home为 Mojo程序提供“家目录”服务,它是一个Mojo程序“家目录”的容器。Mojo::Home从Mojo::File继承了所有的函数和方法。
方法
Mojo::Home继承了Mojo::File中所有的方法,并实现了以下方法。
detect
$home = $home->detect;
$home = $home->detect('My::App');
从MOJO_HOME环境变量的值或应用程序类的位置检测程序的“家目录”。实现代码如下:
sub detect {
my ($self, $class) = @_;
# Environment variable
my $home;
if ($ENV{MOJO_HOME}) { $home = Mojo::File->new($ENV{MOJO_HOME})->to_array }
# Location of the application class (Windows mixes backslash and slash)
elsif ($class && (my $path = $INC{my $file = class_to_path $class})) {
$home = Mojo::File->new($path)->to_array;
splice @$home, (my @dummy = split('/', $file)) * -1;
pop @$home if @$home && $home->[-1] eq 'lib';
pop @$home if @$home && $home->[-1] eq 'blib';
}
$$self = Mojo::File->new(@$home)->to_abs->to_string if $home;
return $self;
}
mojo_lib_dir
my $path = $home->mojo_lib_dir;
把Mojolicious安装到的 lib
包装成Mojo::Home对象返回。
rel_file
my $path = $home->rel_file('foo/bar.html');
根据“参数”相对于当前“家目录”计算得到一个新的Mojo::Home对象。
网友评论