在 Rails 中使用 config.assets.precompile 在子目录中包含资产

Posted

技术标签:

【中文标题】在 Rails 中使用 config.assets.precompile 在子目录中包含资产【英文标题】:Including assets in subdirectories with config.assets.precompile in Rails 【发布时间】:2012-04-06 03:40:11 【问题描述】:

我在 Heroku 上运行了一个 Rails 3.1.3 应用程序,通过 asset_sync 使用 S3 进行资产托管。我的app/assets/css 目录中包含一个包含两个文件的子目录:main.css.scsscategories.css.scss。我的production.rb 中有以下行:

config.assets.precompile += [ 'admin/main.css.scss', 'admin/categories.css.scss', 'print.css', 'products.css.scss', 'services.css.scss' ]

当我推送到 Heroku 时,我的所有资产都被预编译并上传,除了这两个文件。我是否需要执行某种黑魔法才能在此过程中包含这两个文件?

【问题讨论】:

您应该使用已编译资产的名称(即删除 .scss),但我不知道为什么这只影响子目录中的文件 我认为它是那样的挑剔。谢谢! 请添加答案并关闭问题。 弗雷德里克的评论是正确的。我会让他做出答案,我会接受的。 【参考方案1】:

只需键入不带 scss 的文件名即可。

config.assets.precompile += [ 'admin/main.css', 'admin/categories.css', 'print.css', 'products.css', 'services.css' ]

【讨论】:

以上是关于在 Rails 中使用 config.assets.precompile 在子目录中包含资产的主要内容,如果未能解决你的问题,请参考以下文章

Rails 生产环境中的 config.assets.compile=true,为啥不呢?

具有资产的 Rails gem 不会添加到 config.assets.paths

在 Rails 生产中禁用资产缩小

Rails 应用程序 - 使用 Cloudfront 和 Heroku 进行资产交付

Rails 3.1 资产预编译 - 包括所有 javascript 文件

弃用警告:配置选项`config.serve_static_assets`已重命名为`config.serve_static_files`