Assets not available in production

I have a couple of sites that are set up in the same way (rails 3.1.3) as far as I can tell. One of them serves up the assets (js and css) fine in production the other doesn't.

Both sites have this in their application.html.erb

<%= stylesheet_link_tag "application" %> <%= javascript_include_tag "application" %>

Both sites work fine in development but when they run in production the working site looks like this...

<link href="/assets/application-c4ecd302f7655f2bf6c424146c290463.css" media="screen" rel="stylesheet" type="text/css" /> <script src="/assets/application-91e6e03ee56f438681c75dcf42c80529.js" type="text/javascript"></script>

and the broken site looks like this...

<link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" /> <script src="/javascripts/application.js" type="text/javascript"></script>

Now I can just insert the correct lines into the application.html.erb file and things work fine but I would like to know how this should really be handled.

Does anyone know which configuration option I have overlooked to make this work?

I have a couple of sites that are set up in the same way (rails 3.1.3)

as far as I can tell. One of them serves up the assets (js and css)

fine in production the other doesn’t.

Both sites have this in their application.html.erb

<%= stylesheet_link_tag “application” %>

<%= javascript_include_tag “application” %>

Both sites work fine in development but when they run in production

the working site looks like this…

<link href="/assets/application-c4ecd302f7655f2bf6c424146c290463.css"

media=“screen” rel=“stylesheet” type=“text/css” />

and the broken site looks like this…

<link href="/stylesheets/application.css" media="screen"

rel=“stylesheet” type=“text/css” />

What is the exact error message you get in the log file ?

Now I can just insert the correct lines into the application.html.erb

file and things work fine but I would like to know how this should

really be handled.

Does anyone know which configuration option I have overlooked to make this work?

Well, I could kind of reproduce this issue by abusing the config/environments/production.rb with this diff:

NOT ADVISED for real usage, just for testing … (really don’t do this, it will poisen caches for the lifetime that is set for the assets)

@@ -15,10 +15,10 @@ …::Application.configure do config.assets.compress = true

Don’t fallback to assets pipeline if a precompiled asset is missed

  • config.assets.compile = false
  • config.assets.compile = true # false

    Generate digests for assets URLs

  • config.assets.digest = true
  • config.assets.digest = false # true

I presume the config.assets.digest would be the critical difference here as setting it to false turns off the addition of the digests to the pre-compiled assets.

Did you diff the config/environments/production.rb on your 2 systems?

Did you diff the public/assets/manifest.yml on the 2 systems?

HTH,

Peter

There is no actual error message, just a 404 on the /stylesheets/application.css and /javascripts/application.js files and no styling or javascript

I will look at the parameters that you suggest and see if I can make sense of them

Thanks

Ok that makes sense.

Did you run the

RAILS_ENV=production bundle exec rake assets:precompile

task recently? Maybe not? It seems like:

  • the precompile task was run with digest ON

    (because the assets with digest are in /public/assets/…)

  • the current production.rb would use it with digest OFF (because current rendering of links is without digests)

In general, you want to use the digested versions.

Peter