Aloha!Componer roles en una clase Moose no funciona
Tengo un rol que estoy ocupado definiendo en una clase de Moose llamada Authable que está esencialmente compuesta en cualquier clase que podría requerir alguna forma de autenticación en el futuro; Es un papel bastante simple, aquí está la totalidad:
package Trello::API::Roles::Authable;
use Moose::Role;
#authentication information
has key => (
is => "rw",
isa => "Str",
);
has token => (
is => "rw",
isa => "Str",
);
1;
Por alguna razón, cuando intento de componer en una clase utilizando varias instrucciones diferentes, es decir, con " Trello :: API :: Roles :: Authable "; o con "Roles :: Authable";
que constantemente sale este mismo mensaje de error: You can only consume roles, Roles::Authable is not a Moose role.
Alguna idea de por qué esto podría estar sucediendo?
¡Editar!
Sólo una nota, he comprobado la fuente real de Moose :: Role, y vi esta bits:
unless ($meta && $meta->isa('Moose::Meta::Role')) {
require Moose;
Moose->throw_error("You can only consume roles, "
. $role->[0]
. " is not a Moose role");
}
Ésta parece ser donde se está produciendo el error, por lo que casi parece que por alguna razón , el rol que estoy implementando no dice que sea un rol en la metaclase. ¡Aunque podría estar equivocado! Cualquier ayuda sería apreciada.
Otro conveniente EDIT!
Bonificación: contexto de código en el que se llama a la rutina.
package Trello::API::Resource;
use Moose;
use URI::Escape;
use LWP::UserAgent;
with 'Roles::Authable';
el que cuando hago esto, se sabe de forma inteligente para tratar de consumir Roles/Authable.pm pero por alguna razón, simplemente no funciona!
¿Qué quiere decir con "múltiples declaraciones diferentes"? ¿Estás haciendo 'con 'Trello :: API :: Roles :: Authable'' o' con' Roles :: Authable '; '? Porque no parece tener un rol con este último nombre. – friedo
[¿Estás 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) –
Lo que quiero decir es que he probado múltiples variaciones diferentes; en este punto, el archivo que intenta consumir la función es Trello :: API :: Resource, por lo que parece reconocer Roles :: Authable como Trello :: API :: Roles :: Authable e intenta consumir ese módulo. En este punto, no va a reconocer dónde están los módulos ya que no los he puesto en la estructura del directorio del módulo actual; Siempre pude modificar @INC, pero en este momento tengo curiosidad por saber por qué el rol no se puede consumir como tal. – ozzmotik