使用Dancer perl的多个应用程序目录

前端之家收集整理的这篇文章主要介绍了使用Dancer perl的多个应用程序目录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法让一个应用程序在舞者,但有多个appdirs.

或者我可以这样做:

我的项目是dir’foo’.让我们说我有一个dir’bar'(不在’foo’里面),它有一个名为’public’的目录.我的应用程序’foo’使用这个公众作为自己的公众,如果它搜索让我们说’/css/style.css’并且它不在’/ bar / public /’它应该搜索’/ foo /上市/’.我怎样才能做到这一点?

解决方法

如果编写一个呈现静态(并替换某些功能)的插件方法之一.您可以使用 Dancer::Plugin::Thumbnail作为示例.

我看到的另一种方法是在Dancer::Renderer修补get_file_response(),这实际上并不是一个好主意.

以下代码在@dirs数组的每个目录中查找静态文件.它很脏,很丑,不安全.
这可以在将来的版本中打破,并可能导致我不熟悉的Dancer框架的其他部分出现问题.你被警告了

#!/usr/bin/env perl
use Dancer;
use Dancer::Renderer;
use MyWeb::App;

my $get_file_response_original = \&Dancer::Renderer::get_file_response;
my @dirs = ('foo');

*Dancer::Renderer::get_file_response = sub {
    my $app = Dancer::App->current;

    my $result;

    # Try to find static in default dir
    if ($result = $get_file_response_original->(@_)) {
        return $result;
    }

    # Save current settings
    my $path_backup = $app->setting('public');

    # Go through additional dirs
    foreach my $dir (@dirs) {
        $app->setting(public => $dir);
        if ($result = $get_file_response_original->(@_)) {
            last;
        }
    }

    # Restore public
    $app->setting('public' => $path_backup);

    return $result
};

dance;

第三种方法是让Nginx通过为您的应用程序编写适当的Nginx配置来为您完成这项工作.

猜你在找的Perl相关文章