問題

我正在設定一個用於部署的Catalyst webapp,並希望從生產環境中的app.pm中刪除-DebugStackTrace Catalyst外掛.但是,由於我保持測試環境,我想避免“硬編碼”這個.相反,我想有一個定義環境的配置變數並相應地載入模組.所有源都在SVN上,如果我手動更新repo,然後更改我在app.pm中載入的模組,它會變得混亂.

應用程式目前使用configLoader模組來讀取具有所有配置的local_app.yml檔案,該檔案沒有版本化,允許對應用程式在開發、測試或prod環境中的工作方式進行一些控制;但這些只在應用程式啟動後才讀取(因此,在載入模組之後).

這是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

啟用除錯輸出.還可以使用CATALYST_DEBUG或_DEBUG強制從系統環境中設定此設定.環境設定覆蓋應用程式,具有最高優先順序.

然後您可以透過驅動程式設定東西,以便能夠首先設定環境變數,而預設情況下它會關閉生產執行.這應該可以根據需要自動化.然後 StackTrace外掛遵循西裝

此外掛預設情況下只在-debug模式下活動,[...]

因此,環境變數可以兼顧兩者。

另一個選項是首先列出 ConfigLoader 外掛,如其文件在Synsions中所說

 package MyApp;

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

然後您應該能夠單獨控制 StackTrace 外掛和 -Debug 調變解調器-or-not。

  相同標籤的其他問題

perlcatalyst