gpt4 book ai didi

ruby-on-rails - Assets 管道缓存 CSS?

转载 作者:技术小花猫 更新时间:2023-10-29 10:29:52 25 4
gpt4 key购买 nike

我正在开发 Rails 3.1 应用程序。我创建了一个 application.css.scss.erb 文件。 .erb 最后是因为我想从配置文件中加载一个变量作为 css 中的颜色变量:

$highlight1: #<%= COLOR.highlight1 %>;
$highlight2: #<%= COLOR.highlight2 %>;

一切正常,但我遇到的问题是每当我更改 COLOR.highlight1 中的值时,它不会反射(reflect)更改,直到我进入我的 css 文件并更改某些内容(我通常添加一些空格和保存)。那是我看到变化的时候。显然,rails 正在查看文件是否已更改以更新更改。

有没有什么办法至少在开发过程中可以关闭它,这样我就可以看到更改而无需修改 css 文件?

也欢迎对我的技术提出任何批评/意见

最佳答案

Sprockets depend_on 指令用于声明这些类型的依赖关系。所以在你的 css.scss.erb 文件的顶部,加上其他指令(require 和 friends),放一些像这样的东西:

//= depend_on "/path/to/colors.rb"

然后当文件 /path/to/colors.rb 改变时,它会强制 css 也更新。

不幸的是,我从来没有让它与 Assets 目录之一(javascripts/样式表/图像)外部的文件的相对路径一起工作,所以 Sprockets 解析的方式可能有一些问题阻止这种情况的路径,否则我会遗漏一些东西。这让您可以选择指定绝对路径,这几乎肯定不会在您的所有应用程序环境中工作,或者将常量文件放入您的 Assets 目录(例如 app/assets/stylesheets/colors.rb)。

作为引用,这是来自 Sprockets (2.0.3) 源代码的 depend_on 指令的文档,位于 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"
#

如果有人知道指定相对路径到其他地方(如配置/初始化程序或其他东西)的方法,请告诉我!

关于ruby-on-rails - Assets 管道缓存 CSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7656016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com