【发布时间】:2013-12-19 01:37:04
【问题描述】:
我遇到了 Rails、Sprockets、SCSS 的问题,它们没有向生成的图像文件添加指纹。
当我尝试在开发以外的环境中预编译我的资产时,我收到以下错误:
rake aborted!
Custom asset_path helper is not implemented
Extend your environment context with a custom method.
environment.context_class.class_eval do
def asset_path(path, options = {})
end
end
所以我将以下内容添加到初始化程序中:
Rails.application.assets.context_class.class_eval do
def asset_path(path, options = {})
end
end
这会导致错误消失,尽管我不知道这是否是解决问题的正确方法。然后它会产生一个新错误:
undefined method `include?' for nil:NilClass
但是,如果我添加以下代码:
Rails.application.assets.context_class.class_eval do
def asset_path(path, options = {})
"/assets/#{path}"
end
end
它可以很好地预编译,但是生成的 css 没有在 url 末尾生成指纹,因此在查看页面时不会加载。
奇怪的是,没有添加到 scss 文件中的图像,例如 html 中的 img 标签,会很好地附加指纹并在查看页面时显示。
以下是一些不加载指纹的 scss 示例:
background: $blue url( asset-path('hero/hero-bg.jpg') ) repeat-x;
我正在运行 Rails 4.0.2。这是我的 gemfile:https://gist.github.com/anthonycollini/8025540
任何帮助将不胜感激。谢谢。
【问题讨论】:
标签: ruby-on-rails sass sprockets