Архив рубрики: Perl — документация

Catalyst, Sphinx и realtime индекс

Как создать realtime индекс Sphinx. Использование realtime индексов в Catalyst-приложении.

Эксперименты проводились на Sphinx версий 2.2.10 и 2.0.4.

Продолжаем развивать код из первой заметки про Sphinx. Возьмем его за основу и добавим в Catalyst использование realtime индекса.

Читать далее

Sphinx и Catalyst

Как реализовать поиск помощью Sphinx в Catalyst-приложении. Как создать приложение Catalyst, конфиги для Sphinx.

Приложение создавалось на Ubuntu 14.04, perl 5.18, Sphinx версии 2.2.10, модуль Sphinx::Search 0.29. Sphinx от версии к версии меняет функциональность и принципы работы, иногда очень значительно. Модуль Sphinx::Search тоже. Поэтому, не факт, что приведенный ниже код будет работать и у вас в неизменном виде.

В общем, собираясь углубиться в Sphinx тему, надо быть готовым к проблемам совместимости, версионности и т.п.

Читать далее

Catalyst::Engine

Методы

Примечание: логика работы Catalyst с движками, изменилась, начиная с версии 5.9. В данном случае по большей части рассматривается версия 5.8. Начиная с версии Catalyst 5.9 прекратилась поддержка множества движков, в том числе был удален модуль Catalyst::Engine::HTTP .

$self->finalize_body($c)

Получает подготовленный $c->response->body и пишет данные в буфер, на вывод.

$self->finalize_cookies($c)

Создает объект CGI::Simple::Cookie на основе $c->res->cookies, и добавляет cookies в заголовки ответа.

$self->finalize_error($c)

Метод формирует html-страницу для вывода сообщения об ошибке, передает ее объекту Response — $c->res->{body}.

Выведет ошибку, если Catalyst находится в режиме отладки (установлен $c->debug), или сообщение ‘please come back later’ в другом случае.

Вызывается в модуле Catalyst.pm :

$self->finalize_headers($c)

Абстрактный метод, переопределяется в конкретных движках. Позволяет движкам записать отправить в ответе заголовки.

$self->finalize_uploads($c)

Удаление временных файлов после выполненных загрузок.

$self->prepare_body($c)

Устанавливает Catalyst::Request с использованием HTTP::Body.

$self->prepare_body_chunk($c)

Считывает блок входящих данных и добавляет его в тело запроса.

prepare_connection($c)

Абстрактный метод, реализуется в конкретном движке.

$self->prepare_path($c)

Абстрактный метод, реализуется в конкретном движке.

$self->prepare_request($c)

$self->prepare_query_parameters($c)

Обрабатывает строку запроса и извлекает из нее параметры. Добавляет параметры в $c->request().

$self->prepare_read($c)

Подготовка к чтению входящих данных из сокета.

$self->prepare_request(@arguments)

Заполняет context-объект данными из объекта запроса.

$self->prepare_uploads($c)

Подготавливает загружаемые данные для дальнейшей работы.

$self->write($c, $buffer)

Абстрактный метод, реализуется в движке. Делает запись в буфер клиента.

$self->read($c, [$maxlength])

Читает данные из входящего потока с помощью вызова «$self->read_chunk».

$self->read_chunk($c, \$buffer, $length)

Метод read_chunk реализуется в конкретном движке. Метод должен выполнять чтение блока данных из входящего потока.

$self->run($app, $server)

Метод должен быть переопределен в конкретном движке. Запускает движок. Создает сокеты, организует процесс приема запросов, их обработки и отправки ответов клиентам.

В Catalyst версии 5.9 работа этого метода уже организована по-другому.

$self->unescape_uri($uri)

Возвращает непреобразованный URI.

$self->env

Хэш содержащий информацию о переменных окружения, включая многие специальные переменные, добавленные сервером, такие как SERVER_*, REMOTE_*, HTTP_* и т.д.

Логика работы Catalyst. Часть 1

Заметка по логике работы Catalyst. В данной заметке я не ставлю перед собой цели написать понятный текст :) , не знаю, возможно ли это вообще, когда речь идет о логике Catalyst. Только сохранить для себя важные моменты, куски кода. Но возможно, кому-то пригодится.

Попытка разобраться в логике запуска стандартного сервера Catalyst-приложения.

Ниже приведено очень много кода из модулей Catalyst-фреймворка и простого Catalyst-приложения. Весь код приведен с большими сокращениями.

Читать далее

Catalyst::ScriptRunner

Модуль отвечает за загрузку и запуск скриптов в пространстве имен приложения (например, MyApp::Script::Server), или в пространстве имен Catalyst (например, Catalyst::Script::Server).

Читать далее

Catalyst::Stats

Catalyst::Stats — класс Catalyst, работа со статистикой, измерение времени выполнения отдельных экшенов.

Модуль Catalyst::Stats используется по-умолчанию, для вывода информации в логе Сatalyst-приложения. Если вы хотите заменить стандартный модуль чем-то своим, понадобится внести изменения в конфиг MyApp.pm:

Читать далее

Catalyst::Exception

Catalyst::Exception — модуль для работы с исключениями.

Catalyst::Exception наследует методы Catalyst::Exception::Base, если вы не захотели задать какой-то иной класс для работы с исключительными ситуациями в Catalyst-приложении.

Читать далее

Catalyst::Helper

Catalyst.pl используют для быстрого создания каркаса catalyst-приложения. Сам скрипт catalyst.pl очень небольшой, единственное, что он делает — вызывает методы Catalyst::Helper, которые выполняют всю работу.

Читать далее