ちょっと手軽な開発者用のコントローラを作ったんだけど、プロダクションにはあげたくないよ〜。ママ〜って時。
ちょっと手軽な開発者用のコントローラを作ったんだけど、プロダクションにはあげたくないよ〜。パパ〜って時はこんな感じのコントローラを継承するとかどうだろうか。
package Catalyst::Controller::AllowDisable; use base qw/Catalyst::Controller/; use strict; use warnings; sub new { my $self = shift; my $app = $_[0]; if ( !$app->config->{on_controller_disable} ) { my $new = $self->NEXT::new(@_); $new->_application( $app ); return $new; } return $app; } 1;
Package App::Web::Controller::Devel; use base qw/Catalyst::Controller::AllowDisable/; sub make_10000_users : Local { } 1;
.-----------------------------------------------------------------+----------. | Class | Type | +-----------------------------------------------------------------+----------+ | App::Web::Controller::Devel | instance | | App::Web::Controller::Root | instance | '-----------------------------------------------------------------+----------' [debug] Loaded Private actions: .----------------------+--------------------------------------+--------------. | Private | Class | Method | +----------------------+--------------------------------------+--------------+ | /default | App::Web::Controller::Root | default | | /end | App::Web::Controller::Root | end | | /devel/make_10000_u- | App::Web::Controller::Devel | make_10000_- | | sers | | users | '----------------------+--------------------------------------+--------------' [debug] Loaded Path actions: .-------------------------------------+--------------------------------------. | Path | Private | +-------------------------------------+--------------------------------------+ | /devel/make_10000_users | /devel/make_10000_users | '-------------------------------------+--------------------------------------' [info] App::Web powered by Catalyst 5.7007
これで使えなくできるはず。
on_controller_disable:1
[debug] Loaded components: .-----------------------------------------------------------------+----------. | Class | Type | +-----------------------------------------------------------------+----------+ | App::Web::Controller::Devel | class | | App::Web::Controller::Root | instance | '-----------------------------------------------------------------+----------' [debug] Loaded Private actions: .----------------------+--------------------------------------+--------------. | Private | Class | Method | +----------------------+--------------------------------------+--------------+ | /default | App::Web::Controller::Root | default | | /end | App::Web::Controller::Root | end | '----------------------+--------------------------------------+--------------' [info] App::Web powered by Catalyst 5.7007
この実装だと、コントローラごとのdisableはできないけど。