Aloha!Composizione di ruoli in una classe Moose non funzionante
Ho un ruolo che sono impegnato a definire in una classe Moose chiamata Authable che è essenzialmente composta in qualsiasi classe che potrebbe potenzialmente richiedere qualche forma di autenticazione in futuro; è un ruolo piuttosto semplice, ecco l'interezza:
package Trello::API::Roles::Authable;
use Moose::Role;
#authentication information
has key => (
is => "rw",
isa => "Str",
);
has token => (
is => "rw",
isa => "Str",
);
1;
Per una qualche ragione, quando tento di comporre in una classe con più istruzioni diverse, vale a dire, con "Trello :: API :: :: ruoli Authable "; o con "Ruoli :: Autable";
ho sempre ottenere questo stesso messaggio di errore: You can only consume roles, Roles::Authable is not a Moose role.
Qualsiasi idea del perché questo potrebbe accadere?
Modifica!
Solo una nota a margine, ho controllato la fonte reale per Moose :: ruolo, e ho visto questo bit:
unless ($meta && $meta->isa('Moose::Meta::Role')) {
require Moose;
Moose->throw_error("You can only consume roles, "
. $role->[0]
. " is not a Moose role");
}
Questo sembra essere dove l'errore è in corso, così sembra quasi che per qualche motivo , il ruolo che sto implementando non sta affermando che è un ruolo nel metaclass. Anche se potrei sbagliarmi! Qualsiasi aiuto sarebbe apprezzato.
Un'altra comoda modifica!
Bonus: contesto di codice in cui viene chiamata la routine con.
package Trello::API::Resource;
use Moose;
use URI::Escape;
use LWP::UserAgent;
with 'Roles::Authable';
che quando faccio questo, si sa in modo intelligente per cercare di consumare Ruoli/Authable.pm ma per qualsiasi motivo, non riesce proprio a funzionare!
Cosa intendi per "più affermazioni diverse?" Stai facendo 'con 'Trello :: API :: Roles :: Authable'' o' with' Roles :: Authable '; '? Perché non sembra che tu abbia un ruolo con quest'ultimo nome. – friedo
[stai usando 'Moose' o' Any :: Moose'?] (Http://blogs.perl.org/users/sawyer_x/2012/05/priorities-when-using-anymoose-and-what-mouse- people-should-do.html) –
Quello che voglio dire è che ho provato più varianti differenti; a questo punto, il file che tenta di utilizzare il ruolo è Trello :: API :: Resource, quindi sembra riconoscere Roles :: Authable come Trello :: API :: Roles :: Authable e tenta di utilizzare quel modulo. A questo punto, non riconoscerà dove sono i moduli come non li ho messi nella reale strucutre della directory del modulo; Potrei sempre modificare @INC ma a questo punto sono solo curioso di sapere perché il ruolo non può essere consumato in quanto tale. – ozzmotik