我有点困惑,因为application.css似乎包含了自己两次,一次是列出清单中的资源,然后是其中的缓存。因此,当我删除一个单独的文件时,它在application.css文件中似乎仍然有效。
application.css(源代码(
/*
*= require twitter/bootstrap
*= require_self
*= require_tree ./common
*= require_tree ./helpers
*/
它按预期工作,并在开发模式下输出所有相关的单个文件
development.rb
# Do not compress assets
config.assets.compress = false
# Expands the lines which load the assets
config.assets.debug = true
输出
<link href="/assets/twitter/bootstrap.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/application.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/common/announcement.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/common/button.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<Blah blah>
application.css(输出(
这应该是空白的?由于我的application.css文件中只有清单,没有实际的css,但我得到了106kb长的所有连接代码。
IE如果我删除公共目录中的文件,它不会消失。它不再列在输出中,但css仍然出现在应用程序中。css
我以前遇到过这样的问题。它是在我预先编译了资产之后引起的,它在公用文件夹和应用程序目录中的application.css之后。我不知道如何修复它,这样它就不会在开发模式下继续发生,但如果你删除了/public/assets
目录,它应该会修复它。
检查一下你是否有一个公共/资产文件夹,如果你有,并且它已经满了,这可能就是你看到双倍的原因。
目前(2012-09-24(轨道/链轮中存在一个错误,导致无法正确检测导入的文件。
这应该固定在轨道3.2.9和更高版本中,但同时,您可以按照以下方式解决它:
- 杀死rails实例
- rm-rf tmp/cache
- 启动rails实例
您现在应该看到了正确的css。
您可能需要查看
https://stackoverflow.com/a/7854902/686460
"将config.serve_static_assets=false添加到development.rb将阻止从/public/assets加载文件">
这对我来说很好。
@Agustin的解决方案对我来说也很好,但你需要做一些事情:
-
删除/tmp/cache/assets 中的所有内容
-
将
config.serve_static_assets = false
添加到development.rb或test.rb(信用给@Agustin( -
重新启动服务器。
-
请确保您的应用程序.js/.css没有缓存在浏览器中。转到
http://localhost:3000/assets/application.js?body=1
并点击ctrl+f5强制刷新(您也可以尝试在末尾附加一个随机化器参数:http://localhost:3000/assets/application.js?body=1&rnd=12343
如果你得到了其他东西,而ctrl+f5仍然没有帮助,你需要清除浏览器的缓存。
跳过这两个步骤都会返回一个缓存的应用程序.js/.css,该应用程序与我在单个文件中的更新冲突。
对我来说最好的方法是删除tmp/cache/*目录的内容。。。
对我们有用的是设置"config.assets.debug=false">
这不再将包含HTML的CSS设置为href="/assets/bootstrap new.CSS?body=1",而是将其设置为href="/assets/bootstrap new.CSS",我认为这就是问题所在。
我也遇到了同样的问题。尽管清除了tmp/cache和public/assets,但缩小后的application.css仍然被缓存并从某个地方提供,我对单个css文件的更改也没有得到服务。
这对我很有效:在应用程序中.css删除线路*= require_self
重新启动服务器
这似乎删除了缓存,如果你点击浏览器源中的application.css,你将不再看到缩小版
将CCD_ 6替换回文件中并继续开发。
我需要最后一步,但我已经修复了。以下是我所做的:
- 关闭rails服务器
- rake资产:清理
- rake tmp:清除
- 重新启动rails服务器
然后,我在谷歌浏览器中刷新了我的屏幕,但它仍然不起作用。所以,我推出了Firefox,瞧,它真的很管用。这意味着Chrome正在浏览器中缓存旧文件。所以,我清除了Chrome中的浏览器缓存,它成功了!
我知道这是一个老问题,但对我有效的一个修复方法是,我让nginx代理我的开发环境,并且它在配置中有一个location ~ ^/(assets)/
块。要么将其注释掉,要么尝试重新启动nginx以使缓存无效。如果你正在开发,你可能只想把它完全评论掉。
我浪费了太多时间来解决这个问题,直到我想起了这一点。
当在生产环境中运行应用程序时,资产会更好地完成它们的工作,然后您将只加载包含所有文件的application.css,并对其进行压缩,以减少服务器请求,并且将缓存具有压缩样式的application.cs。
http://guides.rubyonrails.org/asset_pipeline.html