Slinky
Slinky

Reputation: 5832

Rails 3 - Moving from Development to Production - Public Assets 404

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" />

Upvotes: 1

Views: 1967

Answers (1)

Slinky
Slinky

Reputation: 5832

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

Upvotes: 8

Related Questions