Ошибка, которую я получаю на сервере разработки:
[info] *** Request 2 (0.000/s) [681] [Thu Dec 12 21:05:39 2013] ***
[debug] Path is "homescreen"
[debug] "GET" request for "homescreen" from "192.168.1.100"
[debug] Rendering template "homescreen/homescreen.tt2"
[error] Couldn't render template "homescreen/homescreen.tt2: file error - homescreen/homescreen.tt2: not found"
[error] Couldn't render template "homescreen/homescreen.tt2: file error - homescreen/homescreen.tt2: not found"
[debug] Response Code: 500; Content-Type: text/html; charset=utf-8; Content-Length: 14312
[info] Request took 0.033915s (29.485/s)
.------------------------------------------------------------+-----------.
| Action | Time |
+------------------------------------------------------------+-----------+
| /homescreen | 0.000341s |
| /end | 0.014055s |
| -> Myproject::View::HTML->process | 0.013049s |
'------------------------------------------------------------+-----------'
Чем я занимаюсь:
У меня есть следующие Controller/Homescreen.pm
:
package Myproject::Controller::Homescreen;
use strict;
use warnings;
use parent 'Catalyst::Controller';
use Data::Dumper;
use JSON;
__PACKAGE__->config->{namespace} = '';
sub homescreen :Path('/homescreen') :Args(0) {
my ( $self, $c ) = @_;
print STDERR "IN THE HOMESCREEN ACTION\n";
$c->stash({template => 'homescreen/homescreen.tt2',
title => 'Home Screen'
});
}
У меня есть следующие View/HTML.pm
:
package Myproject::View::HTML;
use Moose;
use namespace::autoclean;
extends 'Catalyst::View::TT';
__PACKAGE__->config({
#Changed default TT extension to TT2
TEMPLATE_EXTENSION => '.tt2',
render_die => 1,
});
Имею следующие lib/Myproject.pm
:
__PACKAGE__->config(
name => 'Myproject',
# Disable deprecated behavior needed by old applications
disable_component_resolution_regex_fallback => 1,
#enable_catalyst_header => 1, # Send X-Catalyst header
);
__PACKAGE__->config(
#Configure the view
'View::HMTL' => {
#Set the location for TT files
INCLUDE_PATH => [
__PACKAGE__->path_to( 'root', 'src' ),
],
},
);
# Start the application
__PACKAGE__->setup();
Затем у меня есть root/src/homescreen/homescreen.tt2
в моем каталоге Catalyst, который содержит весь мой html-код (в конечном итоге он будет использовать набор инструментов шаблона, но на данный момент это чисто html и javscript-код, который, как я знаю, в порядке).
На странице приложения в моем браузере появляется следующая ошибка:
Couldn't render template "homescreen/homescreen.tt2: file error - homescreen/homescreen.tt2: not found"
Я пробовал использовать DEBUG => 'undef'
в моем представлении HTML.pm, чтобы помочь с отладкой, но, похоже, не получил никаких дополнительных результатов.
Вероятно, есть что-то очень очевидное, что я не замечаю, но я не могу понять, что это такое.
Обновлять
Я только что заметил следующее в разделе Config
экрана отладки моего браузера:
Конфигурация
do {
my $a = {
"Action::RenderView" => {
ignore_classes => [
"DBIx::Class::ResultSource::Table",
"DBIx::Class::ResultSourceHandle",
"DateTime",
],
scrubber_func => sub { ... },
},
"disable_component_resolution_regex_fallback" => 1,
"home" => "/home/fred/Myproject",
"name" => "Myproject",
"Plugin::ConfigLoader" => {},
"Plugin::Static::Simple" => {
debug => 1,
dirs => [],
ignore_dirs => [],
ignore_extensions => ["tmpl", "tt", "tt2", "html", "xhtml"], <---- IS THIS SIGNIFICANT AT ALL?
include_path => [
bless({
dirs => ["", "home", "fred", "Myproject", "root"],
file_spec_class => undef,
volume => "",
}, "Path::Class::Dir"),
],
mime_types => {},
mime_types_obj => bless({}, "MIME::Types"),
no_logs => 1,
},
"root" => 'fix',
"stacktrace" => { context => 3, verbose => 0 },
"static" => 'fix',
"View::HMTL" => {
INCLUDE_PATH => [
bless({
dirs => ["", "home", "fred", "Myproject", "root", "src"],
file_spec_class => undef,
volume => "",
}, "Path::Class::Dir"),
],
},
};
$a->{"root"} = $a->{"Plugin::Static::Simple"}{include_path}[0];
$a->{"static"} = $a->{"Plugin::Static::Simple"};
$a;
}
Я так понимаю, это означает, что он игнорирует мой файл шаблона, потому что он имеет расширение .tt2
?
Однако я нигде в моем проекте Catalyst не устанавливаю этот атрибут ignore_extensions
? Это причина моей проблемы или что-то совершенно не связанное с этим?
die cwd;
в ваш контроллер, чтобы увидеть, где работает ваш материал. Если он находится в домашнем каталоге другого пользователя, скорее всего, у этого пользователя нет разрешения на чтение файлов в/root
. - person simbabque   schedule 13.12.2013__PACKAGE__->config->{'View::HTML'}
в STDERR и убедитесь, что путь соответствует ожидаемому. - person RET   schedule 13.12.2013print STDERR __PACKAGE__->config->{'View::HTML'};
, как вы предложили, я получаю сообщение об ошибке в выводе отладки CatalystUse of uninitialized value in print at /home/fred/MyProject/script/../lib/MyProject/Controller/Homescreen.pm line 10.
- person yonetpkbji   schedule 21.12.2013print STDERR Dumper(__PACKAGE__->..)
, но, возможно, еще слишком рано для того, чтобы это работало правильно. Проблема решена? - person RET   schedule 21.12.2013Couldn't render template...
. Я уверен, что это должно быть что-то очевидное, но не вижу, что ... - person yonetpkbji   schedule 21.12.2013chmod -R <permissionsettings> <dirname>
, чтобы убедиться, но все равно ничего не изменилось. - person yonetpkbji   schedule 21.12.2013