【问题标题】:Error compiling CSS asset on Heroku在 Heroku 上编译 CSS 资源时出错
【发布时间】:2012-06-13 03:01:57
【问题描述】:

我有一个新的 Ruby on Rails 应用程序在 Heroku 的 Cedar 堆栈上运行。该应用程序在本地运行良好。但是,当我尝试登录我的网站时,我收到错误消息:

Error compiling CSS asset

Sprockets::FileNotFound: couldn't find the file 'reset.scss'
  (in app/app/assets/stylesheets/application.css:4)

我的文件 application.css 如下所示:

/**
 *= require_self
 *= require reset.scss
 *= require_tree .
*/

然后,在目录 assets/stylesheets 中,我有文件

application.css
reset.scss
dialog.scss
etc

我的想法是我希望 application.css 将所有 css 资产编译在一起,reset.scss 文件出现在顶部。

这是 Heroku 中的错误吗?为什么它可以在本地完美运行,但在 Heroku 上却不行?

【问题讨论】:

  • 如果您使用“.css.scss”扩展的常规 Rails 约定(即目标语言 + 渲染器/源语言),您应该能够简单地说“需要重置”,并且资产管道我想应该弄清楚。
  • 您是否尝试过在您的开发模式下编译这些资产?

标签: ruby-on-rails ruby-on-rails-3.1 heroku asset-pipeline sass


【解决方案1】:

尝试以下方法

  • 确保 application.css 包含在您的布局文件中。如果没有,则添加以下 css 链接标签。

<%= stylesheet_link_tag "application", :media => "all" %>

  • reset.scss 重命名为reset.css(如果它是纯css)或reset.css.scss(如果它包含scss 标记)

  • 在您的application.css 中,您可以只要求*= require reset。根据 Rails 约定,资产的文件扩展名被跳过。

  • 摆脱 require_tree 并明确要求每个文件

最后,如果它仍然不起作用。作为一种解决方法,您可以在 /config/environment/production.rb 中启用资产的运行时编译。它应该只在第一次命中资产时变慢,因此被编译。初始编译后的请求应该是正常速度。

【讨论】:

  • 好的,我做到了,它似乎让我更接近了。但是,现在我有重复的 CSS 和 JS 文件。 application.css 文件将所有 css 文件编译成一个大文件(我想要的方式)。但是 stylesheet_link_tag 正在扩展为以下内容,这意味着每个样式表声明出现两次!
  • 尝试摆脱 require_tree 并明确要求每个文件。这有帮助吗?
【解决方案2】:

另一种选择是使用“rake assets:precompile”对资产进行本地编译,然后将它们添加到项目存储库中。

【讨论】:

    猜你喜欢
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2012-06-26
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多