Skip to content

OrdinaryMagic/workshop_architecture

Repository files navigation

Индексация и поиск по базе данных

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

Что такое inpx-индекс?

Файл с расширением inpx представляет собой архив inp-файлов, в которых располагаются списки книг.

Где взять inpx-индекс или дамп?

Загрузить пример inpx-индека можно по ссылке. Ниже описываются rake-задача по развертыванию библиотеки книг из inpx-файла в базу данных приложения. Однако, на маках на ARM-архитектуре гем parallel работает не важно, поэтому можно ориентироваться на готовый SQL-дамп.

Развертывание индекса

Прежде чем запускать полноценную rake-задачу по разбору inpx-файла и переноса его содержимого в базу данных можно запустить легковесную rake-задачу inpx:ls, которая извлекает содержимое inpx-файла и выводит его в стандартный поток вывода:

bundle exec rails inpx:ls['db/data/archive.inpx']

Допускает запуск rake-задачи без аргумента в квадратных скобках, в этом случае путь к inpx-файлу будет взят из файла db/data/archive.inpx (его туда необходимо предварительно положить).

bundle exec rails inpx:ls

В случае успешного выполнения предыдущей команды можно приступать к развертыванию базы данных из inpx-файл при помощи следующей rake-задачи

bundle exec rails inpx:rebuild['db/data/archive.inpx']

Аргумент так же можно опустить, если по пути db/data/archive.inpx будет размещен актуальный inpx-файл

bundle exec rails inpx:rebuild

Переменные окружения

Переменные окружения лучше всего устанавливать в файле .env, который игнорируется правилами .gitignore. Файл можно создать из заготовки .sample.env.

  • INPX_PATH - путь к inpx-файлу с индексом библиотеки, необходим для перестройки индекса в базе данных. По умолчанию db/data/archive.inpx
  • ARCHIVES_FOLDER - путь к папке с архивами библиотеки. По умолчанию db/data/
  • SQL_DUMP_PATH - путь к SQL-дампу, который разворачивается командой bundle exec rails db:seed
  • SECRET_KEY_BASE - соль для шифрования данных, лучше всего генерировать командой openssl rand -hex 64
  • DOCKER_COMPOSE_ARCHIVE_FOLDER - абсолютный путь к папке с архивами библиотеки. Необходим для запуска docker-compose, например, на NAS-сервере
  • SEED_EMAIL - электронный адрес для создания первого администратора. Электронный адрес за одно выступает и паролем, который можно поменять в системе админстрирования.
  • INDEX_CONCURRENT_PROCESSES - количество параллельных процессов при разборе inpx-файла. По умолчанию, равно удвоенному количеству ядер центрального процессора

Запуск в docker-контейнере

Запуск приложения с базой данных в docker

docker compose up

Запуск с пересборкой образов

docker compose up --build

Развертывание базы данных из дампа

docker compose run web bundle exec rails db:seed

Диаграммы

В папке docs находятся PlantUML-диаграмма для rake-задачи inpx:rebuild. Посмотреть диаграмму можно в online-редакторе.

  • docs/inpx-rebuild.puml - схема распараллеливания задач в rake-задаче inpx:rebuild

Запуск проекта в docker

Запускаем проект командой

docker compose up -d

Создаем базу данных и прогоняем миграции

docker compose exec -it web bundle exec rails db:create db:migrate

(1) Далее, если есть дамп, можно воспользовать им:

docker compose exec -it web bundle exec rails db:seed

Если вы воспользовались существующим дампом, в нем уже имеется пользователь с логином и паролем igor@softtime.ru.

(2) Или можно запустить разворачивание inpx-индекса

docker compose exec -it web bundle exec rails inpx:rebuild

В последнем случае в системе не будет ни одного пользвателя, поэтому придется самостоятельно создать его через rails-консоль. Запускаем консоль

docker compose exec -it web bundle exec rails c

И создаем пользователя с нужными вам логином и паролем:

AdminUser.create!(email: 'igor@softtime.ru', password: '...')

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published