2013-03-14 1 views
1

Je suis en train de créer un hachage Moose dans mon Catalyst application dans my_app.pm pour que je puisse accéder à l'échelle mondiale:Catalyst hachage global orignal retour type MIME httpd/unix-répertoire

has 'hash' => ( 
    is => 'rw', 
    isa => 'Hashref' 
); 

Cependant, dès que J'essaie d'ajouter par défaut:

has 'hash' => ( 
    is => 'rw', 
    isa => 'Hashref', 
    default => sub { { 
     'key' => 'val', 
     } 
    }, 
); 

Je reçois ce message dans mes outils de développement chrome console:

Resource interpreted as Document but transferred with MIME type httpd/unix-directory 

chaque fois que j'essaie de charger la page. Ensuite, mes pages ne se chargent pas correctement et essaient de me forcer à télécharger un fichier vide chaque fois que je charge la page. Est-il impossible d'utiliser un hachage Moose avec les valeurs par défaut dans my_app.pm? Est-ce que quelqu'un sait ce que je fais mal? Merci!

+0

Peut-être que votre classe de base a déjà un champ de ce nom? – ikegami

+0

@ikegami non, ce n'est pas le cas. Pensez-vous que si je devais utiliser '__PACKAGE __-> config' au lieu d'un hachage' Moose', ce serait un travail acceptable? – srchulo

+0

Je ne comprends pas la question (Qu'est-ce qu'un "hash Moose" ?!) – ikegami

Répondre

0
  1. Vous rencontrez un problème avec la façon dont votre application est configurée; vous voyez cette erreur ci-dessus lorsque vous devriez voir une page d'erreur.

  2. Votre champ par défaut est invalide. sub { 'key' => 'val' } ne renvoie pas de hashref; il renvoie une liste de deux éléments ('key' et 'val'). Essayez plutôt default => sub { +{ 'key' => 'val' } }.

+0

gah, si vous avez besoin de désambiguïser, utilisez 'return' au lieu de' + '! – ikegami

+0

@hobbs, désolé, j'ai entré ma valeur par défaut dans stackoverflow, mais je l'ai eu correctement dans mon application. – srchulo

+0

@hobbs @ikegami J'ai essayé de le remplacer par ce que Hobbs a suggéré, puis j'ai essayé d'utiliser 'return' au lieu de' + ', mais je suis toujours confronté au même problème. – srchulo

0

Alors je me suis ce que je faisais mal, et, malheureusement, c'est l'un de ces moments 'DOH :)

Lors de la définition d'un attribut Moose comme un hachage, vous devez le faire en sorte :

has 'hash' => ( 
    is => 'rw', 
    isa => 'HashRef' 
); 

J'ai accidentellement mal orthographié HashRef et utilisé Hashref. Merci pour toute l'aide! :)