Dancer2 ::插件创建

时间:2017-02-27 00:38:28

标签: perl dancer

我正在尝试为Dancer2创建一个插件,并在config.yml文件中设置选项。 我的config.yml文件如下所示:

 plugins:
      Test:
        foo: 1
        bar: 2
        baz: 3

我试图通过plugin_setting()读取这些值,但没有成功。在该行:

my $settings = plugin_setting();

$ settings没有价值。我希望得到foo:1,bar:2,baz:3。

我的代码如下:

package Dancer2::Plugin::Test;

use Dancer2::Plugin;
use Data::Dumper;

our $VERSION = 0.01;

my $settings = plugin_setting();

register foo => sub {
    return my $settings = _get_settings();
};

register_plugin for_versions => [ 2 ] ;

sub _get_settings {
    my $args = {};
    for (qw/foo bar baz/) {
        if (exists $settings->{$_}) {
        open A, q[>], 'settings.txt';
            $args->{$_} = $settings->{$_};
        }
    }
    print A Dumper $args;close A;
    return $args;
}
1;

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

Dancer已对其插件进行了全面检修,请查看他们的Dancer2::Plugin documentation

我在这里向您展示一个简单的例子:

package Dancer2::Plugin::Test;

use strict;
use warnings;

use Dancer2::Plugin;

has dictionary => (
    is             => 'ro',
    from_config    => 'dict',
    plugin_keyword => 'foo',
);

1;

并在config.yml

plugins:
    Test:
        dict:
            foo: 1
            bar: 2
            baz: 3

这样,你可以使用'插件顶级'配置,我会假设你知道'按键;一个配置,你不知道哪些键有点难以解析。在那个顶级我创建了一个字典键dict,它可以保存一个未知的键值对列表。

在插件中,您可以使用$plugin->dictionary访问(内部)哈希。

在Dancer路线中,您可以简单地使用foo(),因为您声明的是关键字。

我认为开发人员做得很好,使插件看起来很干净!