Problem z adresami URL do miniatur, utworzonych za pomocą wtyczki Przybytek na Rails 6

0

Pytanie

Walczyłem z tym przez kilka dni i miałem nadzieję, że ktoś będzie w stanie pomóc. Może jest coś oczywistego, czego mi brakuje!

Używam wtyczki Przybytek dla Rails do pobrania plików PDF i tworzenie miniatury dla pierwszej strony. PDF ładuje się we wskazane miejsce do przechowywania, a miniatura również jest tworzony i jest sortowana w tym samym miejscu. Jednak nie mogę wyświetlić miniaturę w widoku.

Inicjator:

require "shrine"
require "shrine/storage/file_system"
#require "shrine/storage/memory"

Shrine.storages = {
    cache: Shrine::Storage::FileSystem.new("public", prefix: "uploads/cache"),
    store: Shrine::Storage::FileSystem.new("public", prefix: "uploads/store")
}

Shrine.plugin :activerecord    # loads Active Record integration
Shrine.plugin :cached_attachment_data # enables retaining cached file across form redisplays
Shrine.plugin :restore_cached_data  # extracts metadata for assigned cached files
Shrine.plugin :determine_mime_type
Shrine.plugin :validation_helpers
Shrine.plugin :validation
Shrine.plugin :derivatives
#Shrine.plugin :model, cache: false

Uploader:

require "image_processing/mini_magick"

class FileUploader < Shrine
 include ImageProcessing::MiniMagick

 plugin :processing # allows hooking into promoting
 plugin :versions   # enable Shrine to handle a hash of files
 plugin :derivatives
 plugin :default_url
# plugin :delete_raw # delete processed files after uploading

 Attacher.validate do
  validate_max_size 5*1024*1024, message: "is too large (max is 5 MB)"
  validate_mime_type %w[application/pdf]
 end

 Attacher.derivatives do |original|
  magick = ImageProcessing::MiniMagick.source(original).loader(page:0).convert("jpeg")
  {
   thumb: magick.resize_to_limit!(200, 200) 
  }

 end

end

Rodzaj testu:

<p id="notice"><%= notice %></p>

<p>
  <strong>Number:</strong>
  <%= @issue.number %>
</p>

<p>
  <strong>Title:</strong>
  <%= @issue.title %>
</p>

<p>
  <strong>Data:</strong>
  <%= @issue.file_data %>
</p>

<p>
  <strong>Issue Preview</strong>
  <embed src="<%= @issue.file_url %>" width="80" height="160" />
</p>

<p>
  <strong>Issue Thumbnail:</strong>
  <%= image_tag @issue.file_url(:thumb) if @issue.file %>
</p>

<p>
  <strong>Issue:</strong>
  <%= image_tag @issue.file_url if @issue.file %>
</p>

<%= link_to 'Edit', edit_issue_path(@issue) %> |
<%= link_to 'Back', issues_path %>

Ponadto, gdy patrzę na dane znajdujące się w polu file_data, nie widzę żadnej informacji, dodanej do miniaturki.

Dane pliku: {"id":"fccd20a9323aa5b63fd912f4ca833ebb.pdf","storage":"store","metadata":{"filename":"pdf_sample.pdf","size":351987,"mime_type":"application/pdf"}}

pdf ruby-on-rails shrine thumbnails
2021-11-20 21:41:41
2
0

Albo trzeba włączyć automatyczne tworzenie przy promowaniu inwestycji w trwałej pamięci:

Shrine.plugin :derivatives, create_on_promote: true

Lub taktuje pochodne ręcznie w załączniku:

record.file_derivatives!
2021-11-21 19:40:25

Dziękuję za szybką odpowiedź. Próbowałem taktować pochodne na oba sposoby, które są oferowane powyżej, i miniatura zostanie utworzone i usunięte wraz z załącznikiem pdf bez problemów. Mogę również powodować dostęp do adresu URL pliku w moim widoku przez @issue.file_url. Jedyne, co u mnie nie działa, to adres URL miniatury @issue.file_url(:thumb). dane na szkic-to także nie przechowywać w kolumnie file_data: {"id":"a94c1a6e31176ed530b786ef3cefe18a.pdf","storage":"store","metadata":{"filename":"comic_sample.pdf","size":351987,"mime_type":"application/pdf"}}.
user1851592

Dane pochodnej, zaginionych w kolumnie oznaczają, że produkt nie był generowany, a więc adres URL jest równy zero. Bo opublikowali swoje ustawienia bez create_on_promote: true konfiguracja i wyraźnie nie wykazały tworzenie pochodnych, sądziłem, że to po prostu nie było spowodowane.
janko-m

Dzięki jeszcze raz, jeszcze raz spojrzę na swoje ustawienia. Szybkie pytanie: jak powstaje miniatura, jeśli Attacher.derivatives nie jest wywoływana?
user1851592
0

W końcu to zrozumiał. Ja rozwiązałem problem, dodając następujący w _form.html.erb:

<%= form.hidden_field :image, value: @photo.cached_image_data %>
2021-12-08 23:46:19

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................