diff --git a/lib/file_helper.rb b/lib/file_helper.rb index 9f859ff335a..c44f2b20dcf 100644 --- a/lib/file_helper.rb +++ b/lib/file_helper.rb @@ -67,7 +67,11 @@ class FileHelper tmp.write(chunk) - throw :done if tmp.size > max_file_size + if tmp.size > max_file_size + tmp.close + tmp = nil + throw :done + end end tmp&.rewind diff --git a/spec/components/file_helper_spec.rb b/spec/components/file_helper_spec.rb index 2dc2dabd1b5..adb3730b989 100644 --- a/spec/components/file_helper_spec.rb +++ b/spec/components/file_helper_spec.rb @@ -71,6 +71,18 @@ describe FileHelper do expect(Base64.encode64(tmpfile.read)).to eq(Base64.encode64(png)) end + describe 'when max_file_size is exceeded' do + it 'should return nil' do + tmpfile = FileHelper.download( + "//eviltrout.com/trout.png", + max_file_size: 1, + tmp_file_name: 'trouttmp' + ) + + expect(tmpfile).to eq(nil) + end + end + describe 'when url is a jpeg' do let(:url) { "https://eviltrout.com/trout.jpg" }