Pārlūkot izejas kodu

Fix Cocaine::ExitStatusError when upload small non-animated GIF (#5489)

Looks like copied tempfile need to be flushed before further processing. This issue won't happen if the uploaded file has enough file size.
master
unarist pirms 6 gadiem
committed by GitHub
vecāks
revīzija
4f337c020a
3 mainītis faili ar 21 papildinājumiem un 11 dzēšanām
  1. +1
    -0
      lib/paperclip/gif_transcoder.rb
  2. Binārs
      spec/fixtures/files/mini-static.gif
  3. +20
    -11
      spec/models/media_attachment_spec.rb

+ 1
- 0
lib/paperclip/gif_transcoder.rb Parādīt failu

@@ -10,6 +10,7 @@ module Paperclip
unless options[:style] == :original && num_frames > 1
tmp_file = Paperclip::TempfileFactory.new.generate(attachment.instance.file_file_name)
tmp_file << file.read
tmp_file.flush
return tmp_file
end



Binārs
spec/fixtures/files/mini-static.gif Parādīt failu

Pirms Pēc
Platums: 32  |  Augstums: 32  |  Izmērs: 1.2 KiB

+ 20
- 11
spec/models/media_attachment_spec.rb Parādīt failu

@@ -20,20 +20,29 @@ RSpec.describe MediaAttachment, type: :model do
end

describe 'non-animated gif non-conversion' do
let(:media) { MediaAttachment.create(account: Fabricate(:account), file: attachment_fixture('attachment.gif')) }
fixtures = [
{ filename: 'attachment.gif', width: 600, height: 400, aspect: 1.5 },
{ filename: 'mini-static.gif', width: 32, height: 32, aspect: 1.0 },
]

it 'sets type to image' do
expect(media.type).to eq 'image'
end
fixtures.each do |fixture|
context fixture[:filename] do
let(:media) { MediaAttachment.create(account: Fabricate(:account), file: attachment_fixture(fixture[:filename])) }

it 'leaves original file as-is' do
expect(media.file_content_type).to eq 'image/gif'
end
it 'sets type to image' do
expect(media.type).to eq 'image'
end

it 'sets meta' do
expect(media.file.meta["original"]["width"]).to eq 600
expect(media.file.meta["original"]["height"]).to eq 400
expect(media.file.meta["original"]["aspect"]).to eq 1.5
it 'leaves original file as-is' do
expect(media.file_content_type).to eq 'image/gif'
end

it 'sets meta' do
expect(media.file.meta["original"]["width"]).to eq fixture[:width]
expect(media.file.meta["original"]["height"]).to eq fixture[:height]
expect(media.file.meta["original"]["aspect"]).to eq fixture[:aspect]
end
end
end
end



Notiek ielāde…
Atcelt
Saglabāt