首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dancer2::插件创建

Dancer2::插件创建
EN

Stack Overflow用户
提问于 2017-02-27 08:38:28
回答 1查看 75关注 0票数 1

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

代码语言:javascript
复制
 plugins:
      Test:
        foo: 1
        bar: 2
        baz: 3

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

代码语言:javascript
复制
my $settings = plugin_setting();

$settings得不到任何值。我希望得到foo: 1,bar: 2,baz: 3。

我的代码如下:

代码语言:javascript
复制
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;

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-27 16:34:36

Dancer已经对他们的插件做了彻底的检修,请看他们的Dancer2::Plugin documentation

这里我给你看一个简单的例子:

代码语言:javascript
复制
package Dancer2::Plugin::Test;

use strict;
use warnings;

use Dancer2::Plugin;

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

1;

config.yml内部

代码语言:javascript
复制
plugins:
    Test:
        dict:
            foo: 1
            bar: 2
            baz: 3

这样,你就可以使用“插件顶层”配置,我假设你“知道”密匙;如果你不知道密匙是什么,那么解析起来就有点困难。在顶层,我创建了一个字典键dict,它可以保存一个未知的键值对列表。

在你的插件中,你可以使用$plugin->dictionary来访问(内部)散列。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42476079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档