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.
This commit is contained in:
		
							parent
							
								
									02f7f3619a
								
							
						
					
					
						commit
						4f337c020a
					
				
					 3 changed files with 21 additions and 11 deletions
				
			
		| 
						 | 
					@ -10,6 +10,7 @@ module Paperclip
 | 
				
			||||||
      unless options[:style] == :original && num_frames > 1
 | 
					      unless options[:style] == :original && num_frames > 1
 | 
				
			||||||
        tmp_file = Paperclip::TempfileFactory.new.generate(attachment.instance.file_file_name)
 | 
					        tmp_file = Paperclip::TempfileFactory.new.generate(attachment.instance.file_file_name)
 | 
				
			||||||
        tmp_file << file.read
 | 
					        tmp_file << file.read
 | 
				
			||||||
 | 
					        tmp_file.flush
 | 
				
			||||||
        return tmp_file
 | 
					        return tmp_file
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								spec/fixtures/files/mini-static.gif
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								spec/fixtures/files/mini-static.gif
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
						 | 
					@ -20,7 +20,14 @@ RSpec.describe MediaAttachment, type: :model do
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  describe 'non-animated gif non-conversion' do
 | 
					  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 },
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fixtures.each do |fixture|
 | 
				
			||||||
 | 
					      context fixture[:filename] do
 | 
				
			||||||
 | 
					        let(:media) { MediaAttachment.create(account: Fabricate(:account), file: attachment_fixture(fixture[:filename])) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        it 'sets type to image' do
 | 
					        it 'sets type to image' do
 | 
				
			||||||
          expect(media.type).to eq 'image'
 | 
					          expect(media.type).to eq 'image'
 | 
				
			||||||
| 
						 | 
					@ -31,9 +38,11 @@ RSpec.describe MediaAttachment, type: :model do
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        it 'sets meta' do
 | 
					        it 'sets meta' do
 | 
				
			||||||
      expect(media.file.meta["original"]["width"]).to eq 600
 | 
					          expect(media.file.meta["original"]["width"]).to eq fixture[:width]
 | 
				
			||||||
      expect(media.file.meta["original"]["height"]).to eq 400
 | 
					          expect(media.file.meta["original"]["height"]).to eq fixture[:height]
 | 
				
			||||||
      expect(media.file.meta["original"]["aspect"]).to eq 1.5
 | 
					          expect(media.file.meta["original"]["aspect"]).to eq fixture[:aspect]
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue