尽管有变化,Rails仍使用缓存的application.css

Rui*_*ang 18 ruby-on-rails sass ruby-on-rails-3

我有一个使用SASS的Rails 3.1应用程序.该application.css.scss文件看起来像:

@import 'reset.css';
@import '960.css';
@import 'pages/master.css.scss';
Run Code Online (Sandbox Code Playgroud)

我有一个监视器脚本,application.css.scss只要其中一个@imported文件被更改就会触及.

有一段时间,这个设置工作正常.自从上周(我不知道为什么),Rails已经被拉动的高速缓存版本application.css的网页,尽管我在重新启动应用程序的所有尝试,再感人application.css.scss,等我也删除了.sass-cache没有效果.

有任何想法吗?

Gre*_*Dan 11

我遇到过同样的问题.我停止了服务器,执行了rm -fr tmp/cache,我的css文件终于重建了.


yuv*_*lio 7

首先,通常的缓存清除健全性检查可能会有所帮助.清除浏览器缓存.清除服务器文件缓存(如果您在开发/测试中或能够负担生产)和sass-cache:

rake tmp:cache:clear
rm -fr tmp/sass-cache #or 'compass clean' if using compass
Run Code Online (Sandbox Code Playgroud)

如果这没有帮助,也许Rails 在其他地方编译了另一个 application.css(没有被缓存清除删除)?

例如,我运行compass watch app/assets/stylesheets/application.css.scss调试目的,它创建了一个public/assets/application.css文件,凭借它在public /中的位置, 防止任何新的application.css.scss样式表更改被Rails注意到.删除后,应用程序再次从.scss样式表中删除.这只是意外覆盖文件创建的一个示例.尝试在整个应用程序目录中运行查找以查找任何生成的application.css文件,在清除缓存后执行此操作以避免在结果中显示这些文件.

(仅供参考,为了避免我的具体问题,我现在用--css-dir指向缓存来运行指南针监视以防止我的问题

$ compass watch app/assets/stylesheets/application.css.scss  --css-dir tmp/cache/
Run Code Online (Sandbox Code Playgroud)

)


And*_*tor 7

rake assets:precompile在开发中运行后,我遇到了类似的问题.也许Rails正在提供预编译资产public/assets?尝试清理它.

您不需要在开发中触摸aplication.css.scss,只要其中一个@included文件发生更改,rails就应该为新内容提供服务.

另外,请确保您拥有以下内容 config/environments/development.rb

# Do not compress assets
config.assets.compress = false

# Expands the lines which load the assets
config.assets.debug = true
Run Code Online (Sandbox Code Playgroud)


cia*_*mce 7

如果您将其替换@import 'file.css';为 ,则应该允许它在开发模式下自动刷新@import 'file';application.scss

我一直在使用,bin/rails tmp:clear直到删除文件扩展名

  • 这终于为我解决了!从导入中删除文件扩展名后,现在会在页面刷新时自动获取 CSS 更改。 (2认同)

haj*_*poj -1

随机我遇到了与使用 twitter bootstrap 和 application.css.scss 相关的缓存问题。基本上我将 application.css.scss 更改为普通的 application.css 并解决了我的问题。也许这可以帮助你?如果你还没有弄清楚的话。