Rails 3.2.10未在生产中预编译的资产

时间:2013-01-06 02:44:26

标签: ruby-on-rails-3.2

我的css文件在开发中运行良好。

我的制作应用失败,出现500错误。生产日志文件显示正在编译的css文件

Compiled screen/fluid/nav.css  (0ms)  (pid 16607)

那么这个错误:

Started GET "/login" for 118.211.236.235 at 2013-01-06 01:29:10 +0000
Processing by SessionsController#new as HTML
  Rendered sessions/new.html.erb within layouts/application (9.5ms)
Completed 500 Internal Server Error in 112ms

ActionView::Template::Error (avetmiss.css isn't precompiled):

该文件未在application.css中列出,但似乎无论如何都要编译。这是我的application.css文件:

/*
*= require_self
*= require_tree ./screen
*/

另一个问题是我在我的application.html文件中有这样的打印css:

<%= stylesheet_link_tag 'application-print', :media => 'print' -%>

此文件根本没有预编译。我是否需要将它放在如下的预编译指令中的production.rb中?该指令应该在production.rb还是application.rb?

config.assets.precompile += %w( application-print.css )

我是否需要在上面的预编译语句中添加不是控制器资产的每个css和js文件?

1 个答案:

答案 0 :(得分:0)

看起来这些文件未包含在部署的预编译步骤中。

假设application-print.css和avetmiss.css位于app / assets / stylesheets中,请直接在application.css中使用

/*
*= require self
*= require tree ./screen
*= require avetmiss
*/

或者,如果您想在app / assets / stylesheets文件夹下包含所有css文件,那么在application.css中,只需:

/*
*= require self
*= require tree .
*/

The Rails Guide for Assets对我非常有帮助。

***修改

对于你的print css - 我认为你确实需要一个预编译指令,所以它不会包含在application.css中

config.assets.precompile += %w( application-print.css )