3

我有一个在 Heroku Cedar 堆栈上运行的 Rails 3.2.11。我不在本地编译资产,它们是在 slug 编译期间自动编译的,如此所述。app/assets/stylesheets/new_manifest.css.scss除了默认的application.css.scss. 当我推送到 Heroku 时,这个清单文件并没有像现在这样编译application.css.scss。新的清单文件在开发中运行良好。为什么会这样?

应用程序.rb

config.assets.enabled = true
config.assets.version = '1.0'
config.assets.initialize_on_precompile = false

生产.rb

config.assets.compile = false
config.serve_static_assets = false
config.assets.compress = true
config.assets.digest = true

Heroku 推送的控制台输出

-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       Asset precompilation completed (83.62s)

示例页面

<%= stylesheet_link_tag "new_manifest", media: "all" %>
4

2 回答 2

6

解决方案是添加config.assets.precompile += %w( new_manifest.css )到 production.rb,如此所述。这在开发中不是必需的,但在生产中是必需的,这引起了我的困惑。

于 2013-02-01T17:11:34.153 回答
0

如果你说你new_manifest是一个清单文件,它应该包含在应用程序的主清单中:application.css. 如果您包含它,stylesheet_link_tag它不受资产管道控制(它被视为纯 CSS 文件,而不是清单文件)。它也即将被预编译,但包含将被忽略。有一种更合适的方法可以将附加清单文件包含在主目录中application.css索引文件(查找 2.1.2)。

于 2013-02-01T16:46:52.437 回答