Alex Rivera | Logout

Why does stylesheet_link_tag not link to /assets in production?

Asked 2012-01-11T18:36:17.150
14

I just did the first deploy for a new Rails 3.1 application, but the assets don't seem to work correctly. I'm precompiling everything upon deploy, and it turns up in public/assets like expected. However, the output of for example stylesheet_link_tag "application" in my layout has a href pointing to /stylesheets/application.css. This obviously does not work.

The strange thing is that in development mode everything seems to be fine, it links to /assets/application.css like expected.

I've compared my config/application.rb and config/environments/production.rb files with another app we have on the asset pipeline, and the relevant settings seem to be the same.

Where should I look?

Edit
Report

1 Answer

1

WARNING: Setting config.assets.compile = true in production can make your app vulnerable to Rails Asset Pipeline Directory Traversal Vulnerability (CVE-2018-3760) .

I would suggest you to enable config.assets.compile = false(by default) to true in production.rd and see the assets are served as in developemnt. If they are correctly served then you should check your application.css to see if you are including other stylesheets in the directory properly like having css files

/*
*= require scaffold
*= require pagination
*= require_self
*= require_tree.
*/

where scaffold and pagination are css files. or mention them under config.assets.precompile flag as below.

config.assets.precompile += %w(pagination.css scaffold.css )

I assume the reason being precompile works (application.js, application.css, and all non-JS/CSS are already added) and any additonal assets should be added to config.assets.precompile flag.

answered 2012-01-11T19:51:57.270

Your Answer