Mojoliciousで「[error] Role::Tiny 2.000001+ is required for roles」のエラーが出た時の対処法

PerlのMVCフレームワーク「mojolicious」を触っている時に、以下のエラーが発生した。

[error] Role::Tiny 2.000001+ is required for roles

上記のエラーは、with_rolesメソッドを使おうとする時に発生したものだが、解決策はRole::TinyというモジュールをインストールするだけでOK。

cpanm Role::Tiny

実際にwith_rolesの実装を見ていると、モロにRole::Tinyを使っているのが分かる。

sub with_roles {
Carp::croak 'Role::Tiny 2.000001+ is required for roles' unless ROLES;
my ($self, @roles) = @_;
return Role::Tiny->create_class_with_roles($self,
map { /^\+(.+)$/ ? "${self}::Role::$1" : $_ } @roles)
unless my $class = Scalar::Util::blessed $self;
return Role::Tiny->apply_roles_to_object($self,
map { /^\+(.+)$/ ? "${class}::Role::$1" : $_ } @roles);
}

参考:mojo/Base.pm at master · mojolicious/mojo

と言うより、Role::Tiny依存のメソッドがあるのに、そのRole::Tinyは最初から入れてくれないのか、、、。

参考:Role::Tiny – Roles. Like a nouvelle cuisine portion size slice of Moose. – metacpan.org

参考:Mojo::Base – Minimal base class for Mojo projects

ReratedPosts

Mojoliciousでの設定ファイル(Configプラグイン)の使い方とか一例を解説する
perlでファイルの読み込みとか作成とか削除のまとめ
Mojoliciousで文字化けが起こった時の対処法2つ
PerlのDBIで新規レコードを作成(INSERT)した時にレコードのIDを取得する方法
perlの$_[0](デフォルト引数)とか@_(引数リスト)について気になったので調べた
perlで正規表現で文字列を置換したり、新しい変数に格納する方法