question très simple:accesseurs Moose dans Catalyst ("ne peut pas utiliser la chaîne comme HASH ref" erreur)
package MyApp::Model::Foo;
use Moose;
use namespace::autoclean;
extends 'Catalyst::Model';
has 'firstname' => (is => 'ro', isa => 'Str'); # to be populated in config file
# ...
sub check_name {
my $self = shift;
my $firstname = $self->firstname;
# ...
}
Quand j'appelle check_name()
à partir d'un script de test, à la ligne "$ self-> prenom" J'obtiens l'erreur Can't use string ("MyApp::Model::Foo") as a HASH ref while "strict refs" in use at reader MyApp::Model::Foo::firstname
. Comment suis-je censé l'utiliser?
Je ne peux pas reproduire le test car il est trop étendu, mais au moment où j'exécute le script de test, j'ai appelé un script d'installation qui charge l'application Catalyst (et donc lit le fichier de configuration Catalyst), déploie Le script de test a fonctionné correctement dans la version d'origine (qui n'a pas pris de valeur dans le fichier de configuration, c'est ce que j'essaie de faire maintenant, à l'origine j'ai transmis une valeur), et le bit correspondant est tout simplement
my $name_check = MyApp::Model::Foo->check_name();
ok(defined $name_check, "Name is OK");
Veuillez inclure le script de test. Votre 'check_name' est correct. Quelque chose d'autre doit être faux. – simbabque
Il semble que vous appeliez 'check_name()' comme méthode de classe plutôt que comme méthode d'objet. Mais sans voir l'appel à 'check_name()' nous ne pouvons pas être sûrs. S'il vous plaît [modifier votre question] (http://stackoverflow.com/posts/40243560/edit) pour ajouter le code qui appelle 'check_name()'. –
Je pensais cela aussi, mais je pense aussi que cela pourrait être lié à ce qui se passe avec le fichier _config_ là. Parce que dans un script de test, il n'y aurait pas de plugin ConfigLoader @Dave. – simbabque