Rails 6'da Shrine eklentisi kullanılarak oluşturulan küçük resimler için url'lerle ilgili sorun

0

Soru

Birkaç gündür bununla mücadele ediyorum ve birinin yardım edebileceğini umuyorum. Kaçırdığım belli bir şey olabilir!

PDF dosyalarını yüklemek ve ilk sayfa için bir küçük resim oluşturmak için Rails için Shrine eklentisini kullanıyorum. PDF belirlenen depolama alanına yükleniyor ve küçük resim de oluşturuluyor ve aynı konumda sıralanıyor. Ancak küçük resmi görünümde görüntüleyemiyorum.

Başlatıcı:

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

Yükleyici:

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

Test Görünümü:

<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 %>

Ayrıca, file_data alanında depolanan verilere baktığımda küçük resim için hiçbir bilgi eklenmediğini görüyorum.

Dosya Verileri: {"ıd": "fccd20a9323aa5b63fd912f4ca833ebb.pdf", "storage":"store","metadata": {"filename": "pdf_sample.pdf", "boyut": 351987,"mime_type":"uygulama/pdf"}}

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

Kalıcı depolamaya ek tanıtımında otomatik oluşturmayı etkinleştirmeniz gerekir:

Shrine.plugin :derivatives, create_on_promote: true

Veya türevleri ek olarak manuel olarak işleyin:

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

Teşekkür için senin hızlı yanıt. Türevleri yukarıda önerdiğiniz her iki şekilde de işlemeyi denedim ve küçük resim pdf eki ile birlikte sorunsuz bir şekilde oluşturuluyor ve soruluyor. Görünümümdeki dosyanın URL'sine @issue aracılığıyla erişimi de çağırabilirim.dosya_url. Benim için çalışmayan tek şey, küçük resim @sorununun url'sidir.dosya_url (: başparmak). küçük resmin verileri de file_data sütununda saklanmıyor: {"ıd": "a94c1a6e31176ed530b786ef3cefe18a. pdf","storage":"store","metadata": {"filename": "comic_sample.pdf", "boyut": 351987,"mime_type":"uygulama/pdf"}}.
user1851592

Sütunda eksik olan türev verileri, türevin üretilmediği anlamına gelir ve bu nedenle URL sıfırdır. Çünkü kurulumunuzu olmadan yayınladınız create_on_promote: true ayarlama ve türevleri açıkça oluşturmayı göstermediniz, bunun basitçe çağrılmadığını varsaydım.
janko-m

Tekrar teşekkürler, ayarlarıma tekrar bakacağım. Hızlı soru: Attacher ise küçük resim nasıl oluşturulur.türevler çağrılmıyor mu?
user1851592
0

Sonunda karar verdim. _forma aşağıdakileri ekleyerek sorunu çözdüm.html.erb:

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

Diğer dillerde

Bu sayfa diğer dillerde

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