Это приложение попытка создать собственное решение для работы с библиотекой книг.
Файл с расширением inpx представляет собой архив inp-файлов, в которых располагаются списки книг.
Загрузить пример 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 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 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Если вы воспользовались существующим дампом, в нем уже имеется пользователь с логином и паролем [email protected].
(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: '[email protected]', password: '...')