CodeLog

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

2019-04-12 08:52:58 Perl

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