阿羅哈!撰寫角色成爲駝鹿班不工作
我有一個角色,我正忙於在一個名爲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」;
我一直收到此相同的錯誤消息:You can only consume roles, Roles::Authable is not a 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");
}
這似乎是個錯誤的現象發生,所以它幾乎似乎出於某種原因,我正在實現的角色並不是說它是元類中的一個角色。雖然我可能錯了!任何幫助,將不勝感激。
另一個方便的編輯!
獎勵:其中調用了例程的代碼上下文。
package Trello::API::Resource;
use Moose;
use URI::Escape;
use LWP::UserAgent;
with 'Roles::Authable';
,我這樣做時,智能知道要嘗試和消費角色/ Authable.pm但無論出於何種原因,它只是無法正常使用!
你是什麼意思「多個不同的陳述?」你正在用'Trello :: API :: Roles :: Authable''或'with'Roles :: Authable'來做';'?因爲你似乎沒有與後一個名字的角色。 – friedo
[您是否在使用'Moose'或'Any :: Moose'?](http://blogs.perl.org/users/sawyer_x/2012/05/priorities-when-using-anymoose-and-what-mouse- people-should-do.html) – 2012-05-24 02:13:36
我的意思是我嘗試了多種不同的變體;此時,嘗試消費角色的文件是Trello :: API :: Resource,因此它似乎將Roles :: Authable識別爲Trello :: API :: Roles :: Authable,並嘗試使用該模塊。此時,它不會識別模塊的位置,因爲我沒有將它們放入實際的模塊目錄結構中;我總是可以修改@INC,但是現在我只是好奇爲什麼角色不能被消費。 – ozzmotik