5

We're hosting a Rails app on Heroku, and having some trouble serving some static assets out of the public folder. (I know, this isn't recommended. We actually use CloudFront with a custom origin of our main application so we're getting the benefit of a CDN still. But that's irrelevant for this issue.)

Some assets serve up fine and exactly as expected. Ex: /404.html, /favicon.png

Others return an HTTP 406 error: /video-js/swf/video-js-4.1.0.swf

Rails 4.1.1

Ruby 2.1.2

The rails_12factor gem is present.

production.rb file sets config.serve_static_assets = true

The file definitely exists.. Using the console on Heroku:

File.size("/app/public/video-js/swf/video-js-4.1.0.swf") => 14059

But when I try to access the file, I get an HTTP 406 Not Acceptable response

curl -I http://my-rails-application.com/video-js/swf/video-js-4.1.0.swf

returns:

HTTP/1.1 406 Not Acceptable Content-length: 0 Content-Type: text/html; charset=utf-8 Date: Wed, 04 Jun 2014 02:25:37 GMT Status: 406 Not Acceptable X-Request-Id: d184b097-7326-49cb-ad05-539459f7df08 X-Runtime: 0.532988 Connection: keep-alive

I tried adding a Mime Type for swf files (Mime::Type.register "application/x-shockwave-flash", :swf) and now I get a 404 instead of a 406, but that's still not very useful.

To recap, html, png, jpg, ico, and txt files all are served perfectly. swf, ttf, woff and a few others aren't being served out of the public folder.

What could cause some file types in the public folder to work properly, but not others?

McFadden
  • 1,610
  • 1
  • 16
  • 19

0 Answers0