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和更高版本中解决,但同时,您可以按如下方式解决它:

  1. 杀死rails实例
  2. rm -rf tmp / cache
  3. 启动rails实例

你现在应该看到正确的CSS。

你可能想看看

https://stackoverflow.com/a/7854902/686460

“将config.serve_static_assets = false添加到development.rb将防止从/ public / assets加载文件”

这是为我做的。

@ Agustin的解决scheme为我做了,但这里有一些你需要做的事情:

  1. 删除/ tmp / cache / assets中的所有内容

  2. config.serve_static_assets = false添加到development.rb或test.rb(信贷到@Agustin)

  3. 重新启动您的服务器。

  4. 确保你的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_selfreplace回文件并继续开发。

我需要最后一步,但是我修好了。 以下是我所做的:

  1. closures导轨服务器
  2. 耙资产:干净
  3. 耙tmp:清楚
  4. 重新启动rails服务器

然后,我刷新了我的屏幕在谷歌浏览器,而它仍然没有工作。 所以,我启动了Firefox和瞧,它实际上是工作。 这意味着Chrome会caching浏览器中的旧文件。 所以,我清除了浏览器caching在Chrome中,它的工作!

我知道这是一个老问题,但是对我来说一个解决方法是我有nginx代理到我的开发环境,并且在configuration中有一个location ~ ^/(assets)/ block。 请将其注释掉,或尝试重新启动nginx以使caching无效。 如果你正在开发,你可能只想完全评论它。

直到我记得这一点,我失去了太多的时间解决这个问题。

资产在生产环境中运行应用程序时会更好地完成他们的工作,那么您将只加载包含所有文件的application.css,并在那里压缩,以减less服务器请求,并且此压缩样式的application.css将caching。

http://guides.rubyonrails.org/asset_pipeline.html