gpt4 book ai didi

perl - 在 Perl Catalyst 应用程序的配置变量上加载模块

转载 作者:行者123 更新时间:2023-12-01 10:18:38 24 4
gpt4 key购买 nike

我正在为部署设置一个 Catalyst webapp,并想从我的 app.pm 中删除 -DebugStackTrace Catalyst 插件在生产环境中。但是,由于我保留了一个测试环境,所以我想避免对其进行“硬编码”。相反,我想要一个定义环境的配置变量并相应地加载模块。所有源都在 SVN 上,如果我要更新存储库然后手动更改我在 app.pm 中加载的模块,它会变得困惑。

该应用目前使用 configLoader 模块来读取包含所有配置的 local_app.yml 文件,该文件没有版本控制,并允许对应用在任一开发环境中的工作方式进行一些控制、测试或生产环境;但这些仅在应用程序启动后读取(因此,在模块加载后)。

这是 app.pm 的简化:

package app;

use strict;
use warnings;
use Hash::Merge ();
use Sys::Hostname;

use Catalyst::Runtime '5.80';

use Catalyst qw/
-Debug
StackTrace
ConfigLoader
SomeOtherModule
AndYetAnotherOne
/;

__PACKAGE__->config(

# Some local config stuff

);

# Start the application
__PACKAGE__->setup();

有没有一种方法可以做到这一点而不必使用 Unix 命令来找出正在运行该应用程序的主机?

最佳答案

控制其运行方式的一种方法是通过环境。来自 Catalyst

-Debug

Enables debug output. You can also force this setting from the system environment with CATALYST_DEBUG or _DEBUG. The environment settings override the application, with _DEBUG having the highest priority.

然后您可以进行设置,例如通过驱动程序,以便能够首先设置环境变量,而在生产运行时默认将其关闭。这应该可以根据需要自动执行。那么StackTrace plugin效仿自

This plugin is only active in -Debug mode by default, [...]

因此环境变量可以兼顾两者。

另一种选择是列出 ConfigLoader插件首先,正如其文档在概要中所说

package MyApp;

# ConfigLoader should be first in your list so
# other plugins can get the config information
use Catalyst qw( ConfigLoader ... );

那么您应该能够分别控制StackTrace 插件和-Debug 模式或非模式。

关于perl - 在 Perl Catalyst 应用程序的配置变量上加载模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58211101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com