1

I migrated a Rails 2.2.2 application to Rails 3.1.

In development mode: /var/www/project_dir# thin start --ssl all the assets are found and served beautifully.

When I run in production mode: /var/www/project_dir# thin start --ssl -e production
all of the asset requests (JS,CSS and images) return a 404.

The paths in development and production mode are identical.

enter image description here

I have come to the point where I have exhausted all of my debugging ideas and have no ideas why when in production mode, none of the assets can be found.

I did try migrating over to asset pipeline but that caused more problems that I don't think I can solve right now so I need to solve this with asset pipeline off.

Any and all ideas are welcome and THANKS!

Details
Web Server: Thin 1.5.0
Asset Pipleine: Off
Asset Directories:
/var/www/project_dir/public/images
/var/www/project_dir/public/javascripts
/var/www/project_dir/public/stylesheets

Generated Asset Paths (Development Mode)

<script src="/javascripts/jquery.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/jquery-ui.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/jquery.alerts.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/application.js?1366806357" type="text/javascript"></script>
<link href="/stylesheets/jquery-ui.css?1361279500" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/jquery.alerts.css?1361279500" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/default.css?1361279499" media="screen" rel="stylesheet" type="text/css" />

Generated Asset Paths (Production Mode)

<script src="/javascripts/jquery.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/jquery-ui.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/jquery.alerts.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/application.js?1366806357" type="text/javascript"></script>
<link href="/stylesheets/jquery-ui.css?1361279500" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/jquery.alerts.css?1361279500" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/default.css?1361279499" media="screen" rel="stylesheet" type="text/css" />
Slinky
  • 5,662
  • 14
  • 76
  • 130

1 Answers1

8

Apache would do this automagically for you but with Thin, you need to do the following:

In /config/environments/production.rb

Set this directive to true:

config.serve_static_assets = true

That will enable production mode to read assets from the /public folder

potashin
  • 44,205
  • 11
  • 83
  • 107
Slinky
  • 5,662
  • 14
  • 76
  • 130
  • In Rails 5.0, it seemed to have changed to `config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?` – Chloe Jul 02 '18 at 13:22