كيفية تمرير خيارات تحويل إضافية إلى Paperclip على Heroku؟
-
20-09-2019 - |
سؤال
class User < ActiveRecord::Base
has_attached_file :photo, :styles => { :square => "100%", :large => "100%" },
:convert_options => {
:square => "-auto-orient -geometry 70X70#",
:large => "-auto-orient -geometry X300" },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => ":attachment/:id/:style.:extension",
:bucket => 'mybucket'
validates_attachment_size :photo,
:less_than => 5.megabyte
end
يعمل بشكل رائع على الجهاز المحلي ، ولكنه يعطيني خطأ في Heroku: There was an error processing the thumbnail for stream.20143
الشيء هو أنني أرغب في الحصول على صور تلقائية قبل تغيير حجمها ، لذلك تم تغيير حجمها بشكل صحيح.
البديل الوحيد للعمل الآن (بفضل jonnii) هو تغيير الحجم دون تلقائي:
...
as_attached_file :photo, :styles => { :square => "70X70#", :large => "X300" },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => ":attachment/:id/:style.:extension",
:bucket => 'mybucket'
...
كيفية تمرير خيارات تحويل إضافية إلى Paperclip على Heroku؟
UPD
أكتشف ، المشكلة في خيار "-auto-Orient". يبدو أن هذا الخيار مكسور في إصدار ImageMagick الذي يستخدمه Heroku. لقد قمت بإنشاء معالج صور Paperclip مخصص الموروث من الصورة المصغرة القياسية لـ PaperClip:
module Paperclip
class Ao < Thumbnail
def transformation_command
super + " -auto-orient"
end
end
end
إنه يعمل بشكل مثالي على الجهاز المحلي ، لكنه يفشل على هيروكو.
المحلول
هذه هي الأحجام التي أستخدمها. انهم جميعا يعملون بشكل جيد على هيروكو:
SIZES = {
:original => "640x480>",
:thumb => "150x150#",
:mini => "60x60#",
:micro => "30x30#"
}
تأكد من إصدار GEM الخاص بك من مشبك ورق هو نفس هيروكو. يمكنك تحديد إصدار GEM المحدد في الخاص بك .gems
الملف وفي الخاص بك environment.rb
للتأكد من أنها تصطف.
لست متأكدًا تمامًا لماذا convert_options
تسبب مشاكل ، ولكن إذا كنت أتذكر بشكل صحيح ، فإن PaperClip يستخدم الصور مباشرة وقد تكون الخيارات التي اخترتها غير متوافقة مع نظام ملفات Heroku فقط.
إذا كان هذا أمرًا بالغ الأهمية وتحتاج إلى إجابة الآن ، فسوف أقوم برفع تذكرة دعم على Heroku. إذا حصلت على رد ، فتأكد من نشره هنا!