2017-02-27 15 views
1

Dancer2 용 플러그인을 만들고 config.yml 파일에서 옵션을 설정하려고합니다. 내 config.yml 파일은 다음과 같다 : 내가 성공하지 않고) (plugin_setting를 통해 이러한 값을 읽기 위해 노력하고Dancer2 :: 플러그인 생성

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

. 줄에 :

my $settings = plugin_setting(); 

$ 설정이 적용되지 않습니다.

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; 

누구든지 나를 도울 수 : 3

내 코드는 다음과 같다 : 바즈, 2 : 1, 바 : 나는 foo는 얻을 것으로 기대?

답변

2

댄서 자신의 플러그인으로의 수리를 완료했다, 그들의 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를 사용할 수 있습니다. 당신이 키워드가 될 것입니다 선언으로 댄서 경로 내부

, 당신은 단순히 foo() 사용할 수 있습니다.

나는 개발자가 플러그인이 매우 깨끗 보이게 잘 한 것 같아요!