From 88dba088c9d6c6feca16dea139e332a8a2794e28 Mon Sep 17 00:00:00 2001 From: Braulio Bhavamitra Date: Thu, 6 Sep 2012 08:31:13 -0300 Subject: [PATCH] Protect extension method against nil --- app/models/uploaded_file.rb | 9 ++++++++- app/views/search/_image.rhtml | 2 +- test/unit/uploaded_file_test.rb | 5 +++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/models/uploaded_file.rb b/app/models/uploaded_file.rb index cb722a4..caa30b6 100644 --- a/app/models/uploaded_file.rb +++ b/app/models/uploaded_file.rb @@ -67,7 +67,7 @@ class UploadedFile < Article 'upload-file' end end - + def mime_type content_type end @@ -129,6 +129,12 @@ class UploadedFile < Article end end + def extension + dotindex = self.filename.rindex('.') + return nil unless dotindex + self.filename[(dotindex+1)..-1].downcase + end + def allow_children? false end @@ -144,4 +150,5 @@ class UploadedFile < Article def uploaded_file? true end + end diff --git a/app/views/search/_image.rhtml b/app/views/search/_image.rhtml index 8c83359..be85c67 100644 --- a/app/views/search/_image.rhtml +++ b/app/views/search/_image.rhtml @@ -1,7 +1,7 @@
<% if image.is_a? UploadedFile and image.filename %> - <% extension = image.filename[(image.filename.rindex('.')+1)..-1].downcase %> + <% extension = image.extension %> <% if ['jpg', 'jpeg', 'gif', 'png', 'tiff', 'svg'].include? extension %> <%= link_to '', image.view_url, :class => "search-image-pic", :style => 'background-image: url(%s)'% image.public_filename(:thumb) %> <% if image.width && image.height %> diff --git a/test/unit/uploaded_file_test.rb b/test/unit/uploaded_file_test.rb index 2a2f83a..55f774f 100644 --- a/test/unit/uploaded_file_test.rb +++ b/test/unit/uploaded_file_test.rb @@ -306,6 +306,11 @@ class UploadedFileTest < ActiveSupport::TestCase uses_sqlite end + should 'return extension' do + file = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => @profile) + assert_equal 'png', file.extension + end + should 'upload to path prefix folder if database is not postgresql' do uses_sqlite file = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'), :profile => @profile) -- libgit2 0.21.2