防止Rails 4 Sprocket Asset Pipeline缓存特定文件

时间:2015-01-25 17:11:28

标签: ruby-on-rails asset-pipeline sprockets

我有一个文件globals.css.scss.erb,其中只包含:

<%= Styles.output %>

Styles是一个自定义模块,用于根据YAML文件输出格式化的SCSS / SASS全局变量。

我的问题是,当我更改YAML文件时,globals.css没有更新(即,它被Sprockets缓存)。

我想禁用globals.css上的缓存,而不是我的所有资产。这可能吗?这只适用于我的开发环境。

谢谢,

埃里克

P.S。,this post没有解决问题。

1 个答案:

答案 0 :(得分:4)

据我了解,您需要始终重新编译.erb资产。这是解决方案:

Sprockets::Asset.class_eval do
  alias_method :orig_dependency_fresh?, :dependency_fresh?
  def dependency_fresh?(environment, dep)
    if dep.pathname.extname.eql? '.erb'
      false
    else
      orig_dependency_fresh?(environment, dep)
    end
  end
end