我有一个使用SASS的Rails 3.1应用程序。 application.css.scss
文件如下所示:
@import 'reset.css';
@import '960.css';
@import 'pages/master.css.scss';
每当其中一个@imported文件发生更改时,我都会有一个监视器脚本触及application.css.scss
。
有一段时间,这个设置工作正常。自上周以来(我不知道为什么),Rails已经为网页提取了application.css
的缓存版本,尽管我尝试重新启动应用,重新触摸application.css.scss
等等。我还删除了.sass-cache
无效。
有什么想法吗?
答案 0 :(得分:10)
我有同样的问题。我停止了服务器,执行了rm -fr tmp/cache
,我的css文件终于重建了。
答案 1 :(得分:7)
首先,通常的缓存清除健全性检查可能有所帮助。清除浏览器缓存。清除服务器文件缓存(如果您在开发/测试中或可以负担生产)和sass-cache:
rake tmp:cache:clear
rm -fr tmp/sass-cache #or 'compass clean' if using compass
如果这没有用,可能Rails在别处编译了 ANOTHER application.css(没有被缓存清除删除)?
例如,为了调试目的,我运行compass watch app/assets/stylesheets/application.css.scss
并创建了一个public / assets / application.css文件,凭借其在public /中的位置,阻止任何新的应用程序.css.scss样式表从Rails注意到变化。删除后,应用程序再次从.scss样式表中删除。这只是意外覆盖文件创建的一个示例。尝试在整个应用程序目录中运行查找以查找任何生成的application.css文件,在清除缓存后执行此操作以避免在结果中显示这些文件。
(仅供参考,为了避免我的具体问题,我现在使用--css-dir指向缓存来运行指南针监视以防止我的问题
$ compass watch app/assets/stylesheets/application.css.scss --css-dir tmp/cache/
)
答案 2 :(得分: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
答案 3 :(得分:2)
要清除资产管道缓存,强制rm -rf tmp / *会 满足。这肯定修复了一些其他无法解释的CSS和 JavaScript在我的经历中出现故障。作为预防措施,它 在升级gems或之后清除缓存也是一个好主意 更改资产管道配置,虽然这可能只是 迷信。
最后,如果您正在尝试使用rake资产:在您的网站中进行预编译 开发环境(稍后将在后面的文章中详述),你也会 希望rm -rf public / assets / *之后清理它。
http://blog.55minutes.com/2012/02/untangling-the-rails-asset-pipeline-part-1-caches-and-compass/
答案 4 :(得分:1)
您可以通过执行以下操作来调用Rails automagic 缓存清除:
_master.css.scss
@import 'pages/master';
现在,您可以在master中进行更改并反映出来,而无需手动弄乱缓存。
(注意:我在Rails 4.2上)
答案 5 :(得分:1)
如果您在@import 'file.css';
中将@import 'file';
替换为application.scss
,应该可以在开发模式下将其自动刷新
在删除文件扩展名之前,我一直在使用bin/rails tmp:clear
答案 6 :(得分:0)
随机我遇到了与使用twitter bootstrap和application.css.scss相关的缓存问题。基本上我将application.css.scss更改为普通的application.css并修复了我的问题。也许这可以帮到你?如果你还没有想出来的话。
答案 7 :(得分:0)
我遇到了这个问题,但实际上我把css放到了application.css中,而不是放在它包含的文件中。我清除了application.css以简单地包含我的所有CSS。所以,我的application.css现在看起来像这样:
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
*= require 'bootstrap.min'
*= require 'global'
*/
每当我更改其中一个包含的文件(例如global.css)
时,我的更改都会反映出来答案 8 :(得分:0)
我今天在Rails 6.0.3.1中遇到了类似的问题。我不得不重新触摸application.scss
,以使Rails不会使用缓存的版本。
运行rake tmp:cache:clear
很有帮助,但这很烦人,因为每次更新任何部分scss文件时我都必须运行命令。 :(