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

本文详细介绍了在使用Capistrano进行应用部署到nginx+passenger生产环境时,遇到CSS等资源未预编译的问题,并提供了两种解决方案:开启预编译开关或在production.rb中指定需要预编译的资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 通过capistrano 进行发布程序到 nginx+passenger 生产环境后。

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

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

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

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

  1. 打开预编译开关(由于效率原因不推荐)
    在config/environments/production.rb 文件里面 加入
    config.assets.compile = true

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

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

  2. 发布的时候进行编译。

    如果在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 进行部署。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值