rails 3.1资产pipe道csscaching在开发中
我有点困惑,因为它看起来像application.css包括自己两次,一旦列出资源清单,然后caching。 所以,当我删除一个单独的文件,它似乎仍然活在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仍然从application.css中出现
我之前有过这样的问题。 这是在预编译公用文件夹中applcation.css之后的资产以及apps目录中导致的。 我不知道如何解决这个问题,以便在开发模式下不会发生,但是如果你删除/public/assets
目录,它应该修复它。
检查并查看是否有公共/资产文件夹,如果有,并且已满,则可能是为什么你看到了两倍。
目前有(2012-09-24)在导轨/链轮的错误导致它不能正确检测导入的文件。
这应该在rails 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的解决scheme为我做了,但这里有一些你需要做的事情:
-
删除/ tmp / cache / assets中的所有内容
-
将
config.serve_static_assets = false
添加到development.rb或test.rb(信贷到@Agustin) -
重新启动您的服务器。
-
确保你的application.js / .css没有被caching在你的浏览器中。 转到
http://localhost:3000/assets/application.js?body=1
并点击ctrl + f5强制刷新(你也可以尝试追加一个随机数参数在最后:http://localhost:3000/assets/application.js?body=1&rnd=12343
如果你有其他的东西,ctrl + f5仍然没有帮助,你需要清除浏览器的caching。
跳过这些步骤中的任何一个都会返回caching的application.js / .css与单个文件中的更新冲突。
最好的办法,这对我的工作是删除tmp /caching/ *目录的内容…
这个工作对我们来说是设置'config.assets.debug = false'
这不再将HTML包含CSS设置为href =“/ assets / bootstrap-new.css?body = 1”,而是将其设置为href =“/ assets / bootstrap-new.css”,这是我认为的问题。
我有同样的问题。 尽pipe清理了tmp / cache和public / assets,但是缩小的application.css仍然被caching起来,并且从某个地方提供了服务,并且我对个别css文件的更改没有得到处理。
这工作对我来说:在application.css中删除行*= require_self
重启服务器
这似乎删除caching,如果您在浏览器源代码中单击application.css,您将不会再看到缩小版本
将*= require_self
replace回文件并继续开发。
我需要最后一步,但是我修好了。 以下是我所做的:
- closures导轨服务器
- 耙资产:干净
- 耙tmp:清楚
- 重新启动rails服务器
然后,我刷新了我的屏幕在谷歌浏览器,而它仍然没有工作。 所以,我启动了Firefox和瞧,它实际上是工作。 这意味着Chrome会caching浏览器中的旧文件。 所以,我清除了浏览器caching在Chrome中,它的工作!
我知道这是一个老问题,但是对我来说一个解决方法是我有nginx代理到我的开发环境,并且在configuration中有一个location ~ ^/(assets)/
block。 请将其注释掉,或尝试重新启动nginx以使caching无效。 如果你正在开发,你可能只想完全评论它。
直到我记得这一点,我失去了太多的时间解决这个问题。
资产在生产环境中运行应用程序时会更好地完成他们的工作,那么您将只加载包含所有文件的application.css,并在那里压缩,以减less服务器请求,并且此压缩样式的application.css将caching。