Использование статики в Catalyst-приложении (плагин Static::Simple)

Мое тестовое catalyst-приложение начинает потихоньку развиваться и приобретать функциональность. Для создания интерфейса администратора я решила использовать jQuery UI и мне потребовалось добавить в шаблоны ссылки на статические файлы. Ссылки были добавлены, каждую из них catalyst попытался обработать и вернул 404.

Решив, что с этой проблемой может столкнуться любой начинающий разработчик, решила написать небольшую заметку о том, как заставить catalyst адекватно обрабатывать статические файлы.

Приведенный код строится на ранее созданной основе: https://dev-lab.info/2013/11/как-создать-catalyst-приложение-с-нуля

 

1. Для работы со статикой надо подключить модуль Static::Simple и выполнить настройки.

/lib/app.pm :

  • include_path
    include_path позволяет задать список путей, где catalyst-приложение будет искать ваши статические файлы. Для того, чтобы добавить корневой каталог, надо использовать MyApp->config->{root}.
  • ignore_extensions
    По-умолчанию, типы файлов tmpl, tt, tt2, html и xhtml — статическими не считаются, независимо от того — в какой директории они размещены. Попытка обратиться к ним, в рамках статических директорий, вызовет ошибку:

    Чтобы изменить поведение Static::Simple и позволить catalyst-приложению использовать html-файлы, например, для организации статических страниц руководства пользователя, можно переопределить список игнорируемых расширений с помощью опции ignore_extensions. Либо просто использовать другие расширения файлов, например, *.htm вместо *.html.
  • ignore_dirs
    ignore_dirs подсказывает catalyst, какие директории содержат статику и не подлежат специальной обработке. При этом, не важно где размещается указанная директория. Если указано: ignore_dirs => [ qw/images/ ],

    — все файлы этих директорий будут обрабатываться, как статичные
  • expires
    Использование expires приводит к тому, что в заголовках http-ответа будет возвращаться поле Expires. Значение поля будет зависеть от того, какое количество секунд было указано в параметре expires.

Более подробный список опций для конфигурирования Static::Simple приведены в официальной документации, см. раздел «Полезные ссылки»

 

2. Интерфейс администратора, для работы с логами, будет доступен в специальной директории. Создаем специальный контроллер.

/lib/app/Controller/Log.pm :

 

3. Создаем шаблон для вывода главной страницы интерфейса администратора. Для начала, выведем по центру картинку. Картинка лежит по адресу /root/static/images/catalyst_logo.png.

/root/src/log/index.tt :

После этого запускаем сервер и заходим на страницу http://localhost:3000/log .

 

4. Можно добавить «руководство пользователя», раздел помощи на сайте, разместив статические файлы в catalyst-приложении.

/root/static/help/index.htm :

После запуска сервера этот файл будет доступен по адресу http://localhost:3000/static/help/index.htm

 

Полезные ссылки

search.cpan.org: Catalyst::Plugin::Static::Simple