我正在尝试为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;
有人可以帮助我吗?
答案 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()
,因为您声明的是关键字。
我认为开发人员做得很好,使插件看起来很干净!