啊哈!
我有一个角色,我正忙于在名为 Authable 的 Moose 类中定义该角色,该类本质上组合成任何将来可能需要某种形式的身份验证的类;这是一个相当简单的角色,这是全部内容:
package Trello::API::Roles::Authable;
use Moose::Role;
#authentication information
has key => (
is => "rw",
isa => "Str",
);
has token => (
is => "rw",
isa => "Str",
);
1;
无论出于何种原因,当我尝试使用多个不同的语句将其组合成一个类时,即使用 "Trello::API::Roles::Authable"; 或使用“Roles::Authable”;
我一直收到同样的错误信息:You can only consume roles, Roles::Authable is not a Moose role.
知道为什么会发生这种情况吗?
编辑!
顺便说一句,我检查了 Moose::Role 的实际来源,并看到了这一点:
unless ($meta && $meta->isa('Moose::Meta::Role') ) {
require Moose;
Moose->throw_error( "You can only consume roles, "
. $role->[0]
. " is not a Moose role" );
}
这似乎是发生错误的地方,所以似乎出于某种原因,我正在实施的角色并没有说明它是元类中的角色。虽然我可能弄错了!任何帮助,将不胜感激。
另一个方便的编辑!
奖励:调用 with 例程的代码上下文。
package Trello::API::Resource;
use Moose;
use URI::Escape;
use LWP::UserAgent;
with 'Roles::Authable';
当我这样做时,它智能地知道尝试使用 Roles/Authable.pm 但无论出于何种原因,它都无法运行!