我正在使用Rails 3.1应用程序.我已经创建了一个application.css.scss.erb文件. .erb是最后的,因为我想从配置文件中加载一个变量作为css中的颜色变量:
$highlight1: #<%= COLOR.highlight1 %>; $highlight2: #<%= COLOR.highlight2 %>;
一切工作正常,但我遇到的问题是,每当我更改COLOR.highlight1中的值时,它不会反映更改,直到我进入我的css文件并更改某些东西(我通常添加一些空格并保存) .当我看到这个变化的时候.显然,rails正在查看文件是否已更改以更新更改.
有什么办法,至少在开发过程中,这可以关闭,我可以看到更改,而不必修改css文件?
对我的技术的任何批评/意见也是受欢迎的
解决方法
Sprockets depend_on指令用于声明这些依赖关系.所以在你的css.scss.erb文件的顶部,与其他指令(需要和朋友),放置如下:
//= depend_on "/path/to/colors.rb"
然后当/path/to/colors.rb文件更改时,它将强制css更新.
不幸的是,我从来没有得到这样一个相对路径到一个资源目录(javascripts / stylesheets / images)之外的文件,所以可能有一些方式Sprockets解决阻止这个的路径,否则我是缺少一些东西这可以让您选择指定绝对路径,这几乎肯定不会在所有应用程序环境中运行,或将常量文件放入资产目录(例如app / assets / stylesheets / colors.rb).
作为参考,这里是来自链轮(2.0.3)源的dependency_on指令的文档,位于链轮/ directive_processor.rb
# Allows you to state a dependency on a file without # including it. # # This is used for caching purposes. Any changes made to # the dependency file will invalidate the cache of the # source file. # # This is useful if you are using ERB and File.read to pull # in contents from another file. # # //= depend_on "foo.png" #
如果有人知道一种方式来指定与其他地方相似的路径,如配置/初始化器或某些东西,请让我知道!