diff --git a/app/logical/storage_manager.rb b/app/logical/storage_manager.rb index dcc2b044c..68d60dfa2 100644 --- a/app/logical/storage_manager.rb +++ b/app/logical/storage_manager.rb @@ -54,7 +54,7 @@ class StorageManager seo_tags = seo_tags(post) if tagged_filenames if type == :preview && !post.has_preview? - "#{base_url}/images/download-preview.png" + "#{root_url}/images/download-preview.png" elsif type == :preview "#{base_url}/preview/#{subdir}#{file}" elsif type == :large && post.has_large? @@ -66,6 +66,12 @@ class StorageManager protected + def root_url + origin = Addressable::URI.parse(base_url).origin + origin = "" if origin == "null" # base_url was relative + origin + end + def file_path(md5, file_ext, type) subdir = subdir_for(md5) file = file_name(md5, file_ext, type) diff --git a/test/unit/storage_manager_test.rb b/test/unit/storage_manager_test.rb index 5b4adc911..f440c2039 100644 --- a/test/unit/storage_manager_test.rb +++ b/test/unit/storage_manager_test.rb @@ -83,6 +83,16 @@ class StorageManagerTest < ActiveSupport::TestCase assert_equal("/data/sample/sample-#{@post.md5}.jpg", @storage_manager.file_url(@post, :large)) assert_equal("/data/preview/#{@post.md5}.jpg", @storage_manager.file_url(@post, :preview)) end + + should "return the correct url for flash files" do + @post = FactoryGirl.create(:post, file_ext: "swf") + + @storage_manager.stubs(:base_url).returns("/data") + assert_equal("/images/download-preview.png", @storage_manager.file_url(@post, :preview)) + + @storage_manager.stubs(:base_url).returns("http://localhost/data") + assert_equal("http://localhost/images/download-preview.png", @storage_manager.file_url(@post, :preview)) + end end end