Arhn - архитектура программирования

Rails 5.2 - очистить все вложения активного хранилища через Rake через docker-compose

Первый вопрос после многих лет попыток никого не беспокоить, но мне действительно нужна помощь. Я создал систему управления контентом Dockerized Rails 5.2 Active Storage / Postgers, которая использует конвейер данных rake для приема набора файлов csv для построения базовых моделей. Последний шаг - загрузить и прикрепить изображения к модели Entity:

     has_one_attached :mark

Когда я получаю новый набор файлов csv от своего клиента, у меня есть процесс, в котором я вручную перемещаю новые файлы в папку незавершенной работы, удаляю все файлы в хранилище /, останавливаю все контейнеры, в которых запущено приложение. , базу данных и сервер, а затем запустите набор задач rake, который начинается со сброса и переноса базы данных:

    docker-compose run --rm app rake db:migrate:reset

затем запускает два набора задач: один загружает все записи для каждой модели из CSV, а другой связывает все записи друг с другом. Как уже отмечалось, последним шагом было прикрепление изображений. Однако еще до того, как прикрепить изображения снова, я проверяю, что система работает БЕЗ изображений. Обратите внимание, я вручную удалил все в хранилище /, я удалил базу данных, перенес ее, загрузил все данные, ЗА ИСКЛЮЧЕНИЕМ изображений, перезагрузил страницу и получил эту ошибку:

    variant delegated to attachment, but attachment is nil

и когда я проверяю entity.mark, я получаю следующее:

Mark: [#<ActiveStorage::Attached::One:0x000055e485721fb8 @name="mark", @record=#<Entity id: 2, name: " Huashan Hospital", slug: "huashan_hospital", imageurl: "https://dl.airtable.com/OE7WXy0jRTe7zdFb79Fj_hsyy....", created_at: "2018-07-20 22:25:58", updated_at: "2018-07-20 22:25:58">, @dependent=:purge_later>

Что заставляет меня задаться вопросом, откуда это? В Postgres НЕТ записей для

select * from active_storage_attachments;
id | name | record_type | record_id | blob_id | created_at 
----+------+-------------+-----------+---------+------------
(0 rows)

or in

select * from active_storage_blobs;
 id | key | filename | content_type | metadata | byte_size | checksum | created_at 
----+-----+----------+--------------+----------+-----------+----------+------------
(0 rows)

и в хранилище нет файлов /

ls -la storage/
total 16
drwxr-xr-x   4 bauer  staff   136 Jul 20 15:34 .
drwxr-xr-x  36 bauer  staff  1224 Jul 18 21:11 ..
-rw-r--r--@  1 bauer  staff  6148 Jul 20 15:34 .DS_Store
-rw-r--r--   1 bauer  staff     0 May  8 21:20 .keep

Я подозреваю, что моя проблема в том, что я не понимаю, как работает ActiveStorage, в частности, purge vs purge_later, как Docker влияет на разработку Rails, мое хамское поведение ручного удаления хранилища / сброса грубой силы и сброс базы данных, шокирующее высокомерие, которое я показал думая, я мог бы просто изучить Rails 5.2, ActiveStorage и Dockerization одновременно.

Смиренно умоляю.


Ответы:


1

Entity#mark всегда возвращает ActiveStorage::Attached::One объект, даже если метка не прикреплена. Это облегчает entity.mark.attach(...) API.

Позвоните в ActiveStorage::Attached::One#attached?, чтобы определить, отметка прилагается:

<% if entity.mark.attached? %>
  <%= image_tag entity.mark.variant(...) %>
<% end %>
20.07.2018
  • Благослови тебя, Джордж. Я проверял существование, а не привязанность. Спасибо. 21.07.2018
  • Проблемы все еще возникают. Некоторое время все работало нормально, а затем внезапно я получаю еще одну случайную ошибку в других условиях с указанным местоположением ошибки Nil. Не удается создать URI. Кажется, мне принципиально не хватает чего-то о том, как работает ActiveStorage или как работает вся структура для чего-то вроде ActiveStorage в целом. Я просто пытаюсь загрузить несколько изображений и изменить их размер локально. 22.07.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..