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