您的位置:首页 > 运维架构 > Nginx

在 rails 3 环境中是用 生产环境 nginx + passenger 出现 css 文件无法编译的错误

2013-04-29 01:33 579 查看
在 通过capistrano 进行发布程序到 nginx+passenger 生产环境后。

如果访问网站,出现错误。查询 production.log文件会发现 ActionView::Template::Error (congest_index/congest_index_of_net_for_date.css isn't precompiled):

说明 css 等文件没有预编译。

这是由于 在生产环境,出于效率的考虑把预先编译给关闭了

要解决这个问题。有2种方法

打开预编译开关(由于效率原因不推荐)

在config/environments/production.rb 文件里面 加入

config.assets.compile = true


并且把原来的 config.assets.compile = false 给屏蔽。

然后发布到svn 上,再通过capistranto 进行部署。

发布的时候进行编译。

如果在production上用pre compile的话,不是所有的css和js都会被预编译,拿css来说,他是根据application.css中的引用来判断,如果你的css没有被包含在application.css或者其中引用的css中,那么这个资源就会不被预编译,production上就会出错。

你需要在production.rb中指定需要预编译的资源,如下:

config.assets.precompile += %w( login.css controllers/*.js controllers/*.css lib/*.js lib/*.css common/*.js )


然后 commit 到 svn 上,再通过capistranto 进行部署。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐