KanjiManもJitensyaに乗せてあげたい

  • PluginとかはHStaff::Plugin::*に。
  • NaoyaやKanjiManはHStaffを継承。
#!/usr/bin/env perl
use strict;
use warnings;
use Naoya;
Naoya->new->bell;
use KanjiMan;
KanjiMan->new->bell;
package HStaff;
use strict;
use warnings;
use Class::Component;
__PACKAGE__->load_components(
    qw/ Autocall::InjectMethod /
);
1;
package HStaff::Plugin::Jitensya;
use strict;
use warnings;
use base 'Class::Component::Plugin';
use Perl6::Say;
sub bell : Method {
    my($self, $context, @args) = @_;
    say $self->config->{sound};
}
1;
package Naoya;
use strict;
use warnings;
use base 'HStaff';
use Class::Component config => {
    Jitensya => { sound => 'ちりんちりん' },
};
__PACKAGE__->load_plugins(qw/ Jitensya /);
1;
package KanjiMan;
use strict;
use warnings;
use base 'HStaff';
use Class::Component config => {
    Jitensya => { sound => 'りんりん' },
    Nijikai  => { where => 'watami' },
};
__PACKAGE__->load_plugins(qw/ Jitensya Nijikai /);
1;
  • サーバの種類(Web, DB, LVSとか)ごとにエッジクラスを作る。
  • エッジクラスは Server クラスを継承。
  • Server::Plugin::* でメタ情報を返すモジュール/メソッドを作る。
  • IPアドレスを返すメソッドは全部のエッジクラスに生やす。
  • DBのスレーブを返すメソッドはDBクラスだけに生やす。
  • VRRPのIDを返すメソッドはLVSクラスだけに生やす。
  • とか
  • そんなことを。