Решил обойтись без дополнительных гемов, так как реализация с помощью Carrierwave сильно грузит систему при работе с гигабайтными файлами. Начал делать через стандартный Active Storage.
Но возникла проблема.
Для конвертации видео мне нужен полностью путь до файла.
Его я не знаю как получить.
В модели видео прописываю следующее:
class Video < ApplicationRecord
has_one_attached :clip
include Rails.application.routes.url_helpers
def cover_url
rails_blob_path(self.clip, disposition: "attachment", only_path: true)
end
end
Во вьюхе для примера вывожу url файла
<%= rails_blob_url(@video.clip) if @video.clip.attached? %>
Получаю такое:
localhost:3000/rails/active_storage/blobs/eyJfcmFp...
Физически файл лежит тут:
storage/fT/Xr/fTXr7uMF7geiFtrS2HcxNhJE
При чем fTXr7uMF7geiFtrS2HcxNhJE - это сам файл без расширения.
/fT/Xr/ - эти директории генерируются рандомом.
То есть я даже логику не смогу прописать, чтобы эти файлы находить и автоматизировать генерацию url для конвертации видео.
Если бы можно было задать примерно такой шаблон
storage/#{video.id}/#{video.clip.filename}.#{video.clip.extension}
Было бы идеально.
Сможете подсказать или направить?