Dancer2::Plugin 创作

Dancer2::Plugin creation

我正在尝试为 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;

有人能帮帮我吗?

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

这样,您可以使用 'plugin top-level' 配置,我会从中假设您 'know' 密钥;一个你不知道有哪些键的配置会有点难以解析。在那个顶层,我创建了一个字典键 dict,它可以保存一个未知的键值对列表。

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

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

我觉得开发者做的很好,插件看起来很干净!