在 Perl Catalyst 应用程序的配置变量上加载模块
Loading modules upon config variables on a Perl Catalyst application
我正在为部署设置一个 Catalyst 网络应用程序,并想从我的 app.pm
生产环境中删除 -Debug
和 StackTrace
Catalyst 插件。但是,由于我保留了测试环境,因此我想避免 "hardcoding" 这种情况。相反,我想要一个定义环境的配置变量并相应地加载模块。所有源代码都在 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 插件,正如它的文档在 Synopsis
中所说的那样
package MyApp;
# ConfigLoader should be first in your list so
# other plugins can get the config information
use Catalyst qw( ConfigLoader ... );
那么你应该能够分别控制 StackTrace
插件和 -Debug
模式或非模式。
我正在为部署设置一个 Catalyst 网络应用程序,并想从我的 app.pm
生产环境中删除 -Debug
和 StackTrace
Catalyst 插件。但是,由于我保留了测试环境,因此我想避免 "hardcoding" 这种情况。相反,我想要一个定义环境的配置变量并相应地加载模块。所有源代码都在 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 插件,正如它的文档在 Synopsis
中所说的那样package MyApp; # ConfigLoader should be first in your list so # other plugins can get the config information use Catalyst qw( ConfigLoader ... );
那么你应该能够分别控制 StackTrace
插件和 -Debug
模式或非模式。