所以,我的<head>
, 里面有以下代码行app/views/layouts/application.html.erb
:
<%= stylesheet_link_tag "front", :media => "all" %>
这在开发中运行良好,但是当我切换到生产时它会中断,因为它没有预编译,所以我运行rake assets:precompile
,它将一堆文件添加到我的公共目录中,也很好,但是所有 css 和 js 文件的名称如下:
application-digest.ext
application-digest.ext.gz
application.ext
application.ext.gz
哪里ext
是css
或js
,并且digest
明显不同。
图像文件随版本name.ext
一起提供。name-digest.ext
所以,当导航到页面时,我得到一个ActionView::Template::Error
告诉我front.css isn't precompiled
。
由于我对不同的控制器有不同的布局(以及FrontController
使用application.html.erb
布局,如果这很重要),我不想在所有控制器布局中包含所有css 或 js 文件,因为这只是浪费带宽。
我如何告诉 rails app/assets
单独编译里面的所有文件?
config.assets.compile = true
我设法通过设置inside使用实时编译来“解决”问题config/environments/production.rb
,但我一直在到处阅读这不是处理资产的最佳方式[1],因为它浪费了大量资源。
该应用程序托管在 Heroku 上。
[1]:官方 Ruby on Rails 指南页面:“此模式使用更多内存,性能比默认更差,不推荐。”