Elendir
Elendir

Reputation: 203

Rails 3.1 assets precompilation

I'm working on a rails 3 app and trying to deploy it on a production environment. I'm using capistrano to deploy my app and configured it to precompile the assets after the update_code task.

The thing is everything works fine when I deploy the app. By following the server production logs I see this :

Compiled application.js  (6ms)  (pid 7552)
Compiled jquery.js  (4ms)  (pid 7552)
Compiled jquery_ujs.js  (0ms)  (pid 7552)
Compiled home.js  (94ms)  (pid 7552)
Compiled libs/dd_belatedpng.js  (0ms)  (pid 7552)
Compiled libs/modernizr-1.7.min.js  (0ms)  (pid 7552)
Compiled plugins.js  (0ms)  (pid 7552)
Compiled script.js  (0ms)  (pid 7552)
Compiled user_sessions.js  (93ms)  (pid 7552)
Compiled users.js  (92ms)  (pid 7552)
Compiled application.css  (3ms)  (pid 7552)
Compiled handheld.css  (0ms)  (pid 7552)
Compiled home.css  (55ms)  (pid 7552)
Compiled style.css  (0ms)  (pid 7552)
Compiled user_sessions.css  (1ms)  (pid 7552) 
Compiled users.css  (0ms)  (pid 7552)
Compiled application.js  (6ms)  (pid 7541)
Compiled jquery.js  (4ms)  (pid 7541)
Compiled jquery_ujs.js  (0ms)  (pid 7541)
Compiled home.js  (95ms)  (pid 7541)
Compiled libs/dd_belatedpng.js  (0ms)  (pid 7541)
Compiled libs/modernizr-1.7.min.js  (0ms)  (pid 7541)
Compiled plugins.js  (0ms)  (pid 7541)
Compiled script.js  (0ms)  (pid 7541)
Compiled user_sessions.js  (93ms)  (pid 7541)
Compiled users.js  (94ms)  (pid 7541)
Compiled application.css  (2ms)  (pid 7541)
Compiled handheld.css  (0ms)  (pid 7541)
Compiled home.css  (1ms)  (pid 7541)
Compiled style.css  (0ms)  (pid 7541)
Compiled user_sessions.css  (0ms)  (pid 7541)
Compiled users.css  (0ms)  (pid 7541)

But if I try to display the main page in a browser, I get this :

ActionView::Template::Error (style.css isn't precompiled):
    14: 
    15:     %link{:rel => "shortcut icon", :href => "/favicon.ico" }
    16:     %link{:rel => "apple-touch-icon", :href => "/apple-touch-icon.png"}
    17:     = stylesheet_link_tag    "style"
    18:     = javascript_include_tag "libs/modernizr-1.7.min"
    19:     = javascript_include_tag "application"
    20: 
  app/views/layouts/application.html.haml:17:in         `_app_views_layouts_application_html_haml__1713356285_69878424198520'

I just can't understand how the server is able to tell me the assets are compiled and just after it tells me that, actually, the files aren't compiled.

Does anyone encountered this kind of problem ?

Thanks for your help.

Upvotes: 0

Views: 3051

Answers (1)

Mr_Nizzle
Mr_Nizzle

Reputation: 6714

One solution is to tell the production environment not to check for pre-compiled in the config/environments/production.rb and set the line:

config.assets.compile = false

to

config.assets.compile = true

Restart your server and then you should check where HALM is looking for the style.css which should be assets/style.css


UPDATE

Here's another option

Tell your config/environments/production.rb to compile that exactly file to make sure It's being compiled.

config.assets.precompile += %w( style.css )

Saw this on https://stackoverflow.com/a/7541958/295228

Upvotes: 1

Related Questions