我正在尝试为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;有人能帮我吗?
发布于 2017-02-27 16:34:36
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(),因为您已经声明了is是一个关键字。
我认为开发人员做得很好,使插件看起来非常干净!
https://stackoverflow.com/questions/42476079
复制相似问题