From 3e124461207a1e0f62395505262cb34a6fd67ce7 Mon Sep 17 00:00:00 2001 From: Vasily Fedoseyev Date: Tue, 9 Apr 2024 23:02:54 +0300 Subject: [PATCH] Fix optimizer temporary file --- lib/paperclip/optimizer.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/paperclip/optimizer.rb b/lib/paperclip/optimizer.rb index 6a0811d..174eae4 100644 --- a/lib/paperclip/optimizer.rb +++ b/lib/paperclip/optimizer.rb @@ -22,8 +22,9 @@ module Paperclip dst_shell = dst_file.path.shellescape cmd = case real_content_type when 'image/jpeg', 'image/jpg', 'image/pjpeg' - # TODO: --stdout > #{dst_shell} - "cp #{src_shell} #{dst_shell} && jpegoptim --all-progressive -q --strip-com --strip-exif --strip-iptc -- #{dst_shell}" + # NB: --stdout не работает, там бывают пустые файлы если оно решило ничего не делать + # нельзя `cp`, надо чтобы открытый файл указывал куда надо, поэтому `cat>` + "cat #{src_shell} > #{dst_file} && jpegoptim --all-progressive -q --strip-com --strip-exif --strip-iptc --stdout -- #{dst_shell}" when 'image/png', 'image/x-png' "pngcrush -rem alla -q #{src_shell} #{dst_shell}" when 'image/gif' @@ -32,6 +33,7 @@ module Paperclip return end run_and_verify!(cmd) + dst_file.tap(&:flush).tap(&:rewind) dst_file rescue StandardError => e dst_file.close!