Директории

Материал из Eludia
Перейти к: навигация, поиск

Содержание

В этой статье изложена стандартная структура директорий Eludia-приложений. API Eludia.pm всюду предполагает, что файлы расположены и именуются так, как описано здесь.

Список директорий

Все файлы, относящиеся к инсталляции одного Eludia-приложения, всегда располагаются в одной директории. Ниже названия разделов соответствуют относительным путям подкаталогов и файлов в одной такой директории приложения.

conf

Директория с конфигурацией данной инсталляции приложения. Должна быть вне поля зрения средств версионного контроля (во всяком случае, общих с кодом приложения).

conf/httpd.conf

Конфигурационный файл формата, пригодного для использования Apache 1.x или 2.x. Содержит Perl-секцию, которая играет роль загрузочного скрипта. Используется приложением вне зависимости от того, какой WEB-сервер обслуживает HTTP-запросы: Apache/mod_perl или какой-либо иной (для не-Apache серверов разборо httpd.conf Eludia.pm осуществляет самостоятельно).

lib

Здесь располагаются исходные тексты библиотек, реализующих бизнес-логику приложения. Версионный контроль должен распространяться на неё полностью.

lib/Config.pm

Файл с конфигурацией приложения. Содержит:

  • строки подключения (use) для внешних Perl-модулей;
  • определение переменной $conf;
  • код процедур, доступных всюду в приложении.

lib/Model

Директория с файлами, имена которых соответствуют именам таблиц БД, а содержимое составляет описание схемы данных.

lib/Updates

Директория с автоматически вызываемыми одноразовыми скриптами обновления БД.

lib/Content

Директория с файлами, имена которых соответствуют типам экранов, а содержимое описывает процедуры извлечения и обработки данных. Подробнее об именах процедур см. handler.

lib/Presentation

Директория с файлами, имена которых соответствуют типам экранов, а содержимое описывает процедуры генерации HTML. Подробнее об именах процедур см. handler.

lib/Presentation/templates

Директория с шаблонами, используемыми процедурой fill_in_template для интерполяции в процессе печати офисных документов или рассылки e-mail.

lib/offline

Директория с offline-скриптами.

разбиение lib по разделам

В относительно простых, а также унаследованных приложениях вышеописанные файлы и директории (Config.pm, Model и т. д.) располагаются непосредственно под lib. Однако с некоторых пор Eludia.pm поддерживает разбиение монолитной lib на множество поддиректорий, посвящённых различным подсистемам. При этом один из таких подкаталогов обязательно называется lib/_, а имена прочих состоят из символа '_', за которым следует тематический префикс. Имена всех файлов в таких "прочих" директориях должны начинаться с этого префикса, а в lib/_ могут лежать любые файлы. При этом поддиректория с префиксом используется только в рамках запроса на тип экрана с соответствующим префиксом.

Рассмотрим пример: приложение, в котором выделены разделы, посвящённые кадровому учёту и информационным технологиям. Назначим им префиксы 'hr' и 'it' соответственно. Тогда директория lib будет содержать 3 поддиректории: '_', '_hr' и '_it'. Традиционные типы экранов ('log', 'users' и т. п.) будут располагаться в lib/_ (в частности, файлы lib/_/Content/log.pm, lib/_/Model/users.pm, и т. д.), специфически кадровые — в lib/_hr (например, lib/_hr/Presentation/hr_orders.pm), а информатизаторские — в lib/_it (lib/_it/Model/it_servers.pm и прочее подобное).

Для запросов с типами 'hr_...' в поле зрения ядра будут попадать директории 'lib/_hr' и 'lib/_', для типов 'it_...' — 'lib/_it' и 'lib/_', для всех прочих — только 'lib/_'.

При этом файлы Config.pm, Content/menu.pm и Menu/* ищутся и в директории с префиксом (если такая есть), и всегда в 'lib/_'. Поиск не останавливается на первом обнаруженном файле. Если, скажем, одновременно окажутся обновленными lib/_/Content/menu.pm и lib/_hr/Content/menu.pm, то для экрана с типом 'hr_orders' будут перезагружены оба.

docroot

"Корневой каталог" приложения с точки WEB-сервера. Версионный контроль должен распространяться на эту директорию с некоторыми исключениями.

docroot/i

Директория статических файлов.

docroot/i/upload

Директория для постоянного хранения файлов, загруженных через WEB-интерфейс (в том случае, если они хранятся не в БД). Версионный контроль здесь должен быть отключён. Если система не предполагает прямой выдачи файлов (как иллюстраций в HTML), эту директорию имеет смысл закрыть от прямого доступа, так как с использованием функций типа sql_download_file можно обеспечить контроль доступа на уровне приложения.

docroot/i/_skins

Автоматически создаваемая директория, в которой содержится статика, соответствующая $_SKIN'ам. Картинки, CSS и js копируются сюда при каждой загрузке Eludia.pm. Версионный контроль здесь должен быть отключён.

docroot/i/skins

Если эта директория существует, то её содержимое переписывается поверх docroot/i/_skins при каждой загрузке ядра. Она предназначена для того, чтобы локально переопределять для данного приложения статические файлы, относящиеся я ядру. В отличие от docroot/i/_skins, эта директория является частью кода приложения и должна находиться под версионным контролем.

docroot/i/_mbox

Автоматически создаваемая директория, в которой откладываются ссылки на актуальные мгновенные сообщения для пользователей.

docroot/i/_mbox/by_user

Автоматически создаваемая директория, в которой откладываются JSON-файлы, хранящие мгновенные сообщения для пользователей.

docroot/dbm

Автоматически создаваемая директория для хранения файлов с контрольными суммами. Это служебная информация, по соображениям эффективности хранимая ядром вне БД. Потеря этих данных несущественна для системы. Максимальный возможный ущерб: замедление работы на краткий период, после которого они воссоздаются автоматически. Поэтому для данной директории не требуется ни хранить резервные копии, ни, тем более, версии.

docroot/session_access_logs

Автоматически создаваемая директория для хранения истории навигации пользователей в рамках сессий. Как и docroot/dbm, содержит файлы, утеря которых не угрожает целостности учитываемых данных.

docroot/templates

Устаревший, но поддерживаемый аналог lib/Presentation/templates

logs

Директория для разнообразных log-файлов, связанных с приложением. Обязательно должна находиться вне версионного контроля. В некоторых конфигурациях (в зависимости от WEB-сервера) выделить access.log и/или error.log данного приложения (VirtualHost) в отдельные файлы не получается.

t

Директория для копий тестовых скриптов. Обязательно должна находиться вне версионного контроля.

Замечания

Типовой файл .gitignore

conf
logs
t
docroot/i/_mbox/
docroot/i/_skins/
docroot/i/upload
docroot/dbm/
docroot/session_access_logs/

Список автоматически создаваемых директорий

  • docroot/i/_mbox
  • docroot/i/_mbox/by_user
  • docroot/i/_skins
  • docroot/i/upload
  • docroot/i/upload/images
  • docroot/dbm
  • docroot/session_access_logs
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Разработчику
Администратору
Инструменты