アロハ!
私は 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 を試して消費することをインテリジェントに認識しますが、何らかの理由で機能しません!