ali*_*lik 12 css ruby-on-rails sass ruby-on-rails-3.1 asset-pipeline
我正在研究Rails 3.1应用程序.我创建了一个application.css.scss.erb
文件..erb到底是因为我想从配置文件中加载一个变量作为css中的颜色变量:
$highlight1: #<%= COLOR.highlight1 %>;
$highlight2: #<%= COLOR.highlight2 %>;
Run Code Online (Sandbox Code Playgroud)
一切正常,但我遇到的问题是每当我更改COLOR.highlight1中的值时,它都不会反映更改,直到我进入我的css文件并更改某些内容(我通常添加一些空格并保存) .那是我看到变化的时候.显然,rails正在查看文件是否已更改以更新更改.
有没有办法,至少在开发过程中,这可以关闭,我可以看到更改,而不必修改css文件?
对我的技术的任何批评/意见也是受欢迎的
Sprockets depend_on
指令用于声明这些类型的依赖项.因此,在css.scss.erb文件的顶部,使用其他指令(require和friends),输入如下内容:
//= depend_on "/path/to/colors.rb"
Run Code Online (Sandbox Code Playgroud)
然后当文件/path/to/colors.rb
更改时,它将强制css也更新.
不幸的是,我从来没有得到这个与一个资产目录(javascripts/stylesheets/images)之外的文件的相对路径,因此Sprockets可能会解决阻止这种情况的路径,否则我就是遗漏了什么.这使您可以选择指定绝对路径,这几乎肯定不适用于所有应用程序环境,或者将常量文件放入资产目录(例如app/assets/stylesheets/colors.rb).
作为参考,这里是depend_on
Sprockets(2.0.3)源代码中的指令文档,位于sprockets/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"
#
Run Code Online (Sandbox Code Playgroud)
如果有人知道如何指定其他地方的相对路径,如配置/初始化器或其他东西,请告诉我!