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

在 通过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 进行部署。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值