我想在配置文件中存储变量,以便我可以在一个地方设置它们,并在需要时访问它们。
将这些变量放在Dancer应用程序中的位置在哪里,我该如何访问它们?
答案 0 :(得分:2)
最好的方法是使用一个具有默认全局设置的config.yml文件,如下所示:
# appdir/config.yml
logger: 'file'
layout: 'main'
您的问题:如何访问?
答案:舞者应用程序可以使用'配置'用于轻松访问其配置文件中的设置的关键字,例如:
get '/appname' => sub {
return "This is " . config->{appname};
};
这样可以简单轻松地将您的应用程序设置保存在一个地方 - 您不必担心自己实现所有这些设置。
您可能希望从网络应用外部访问您的网络应用配置。使用Dancer,您可以使用config.yml中的值和一些其他默认值:
# bin/script1.pl
use Dancer ':script';
print "template:".config->{template}."\n"; #simple
print "log:".config->{log}."\n"; #undef
请注意,config->{log}
应该会在默认支架上导致undef错误,因为您没有加载环境,并且默认的脚手架日志是在环境中定义的,而不是在config.yml中定义的。因此undef
。
如果你想加载一个环境,你需要告诉Dancer在哪里寻找它。一种方法是告诉Dancer webapp所在的位置。从那里,Dancer会扣除config.yml文件的位置(通常为$ webapp / config.yml)。
# bin/script2.pl
use FindBin;
use Cwd qw/realpath/;
use Dancer ':script';
#tell the Dancer where the app lives
my $appdir=realpath( "$FindBin::Bin/..");
Dancer::Config::setting('appdir',$appdir);
Dancer::Config::load();
#getter
print "environment:".config->{environment}."\n"; #development
print "log:".config->{log}."\n"; #value from development environment
默认情况下,Dancer加载开发环境(通常是$ webapp / environment / development.yml)。如果要加载默认环境以外的环境,请尝试以下操作:
# bin/script2.pl
use Dancer ':script';
#tell the Dancer where the app lives
Dancer::Config::setting('appdir','/path/to/app/dir');
#which environment to load
config->{environment}='production';
Dancer::Config::load();
#getter
print "log:".config->{log}."\n"; #has value from production environment