2017-02-27 5 views
1

Dancer2用のプラグインを作成しようとしていて、config.ymlファイルにオプションを設定しようとしています。 マイconfig.ymlファイルは次のようになります。私は成功せず、)(plugin_settingを経由して、これらの値を読み込むしようとしていますDancer2 ::プラグインの作成

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

。次の行にあります。

my $settings = plugin_setting(); 

$ settingsは値を取得しません。

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()を使用することができます。

私は開発者がうまくいって、プラグインをきれいに見せると思います!

関連する問題