为什么要缓存开发资产?

时间:2016-06-09 19:10:16

标签: ruby-on-rails caching asset-pipeline

我创建了我认为是日历的漂亮布局。我使用capistrano配方将其部署到舞台上,造型看起来像是一场灾难。我想也许部署出错了。我检查了临时站点,我注意到td周围有一个边界,而我的开发没有它。这是否有css声明?

$ grep -rnw "$MYSITE/current/app/assets/stylesheets" -e ".fc td"
$ tail -n 1000 $MYSITE/current/app/assets/stylesheets/fullcalendar_engine/fullcalendar.css | grep -B10 -A10 ".fc td"
.fc th,
.fc td {
  border-style: solid;
  border-width: 1px;
  padding: 0;
  vertical-align: top;
}

是。事实上,我也在我的本地机器上有它:

.fc th,
.fc td {
  border-style: solid;
  border-width: 1px;
  padding: 0;
  vertical-align: top;
}

那么部署没有出错。我的本地环境中发生了一些缓存行为。我在本地运行了以下内容:

rake assets:clean assets:clobber assets:precompile tmp:clear

在那之后,我的当地人现在看起来像是分期。我不明白为什么我的本地资产被缓存了。它们应该在每个页面加载时刷新。在development.rb中,我没有缓存:

config.cache_classes = false
config.action_controller.perform_caching = false

第一个确保为每个请求重新加载每个ruby类(使用ruby加载而不是require),第二个确保没有片段缓存。诚然,两者都与资产没有任何关系,但我在development.rb看到资产的唯一一行就是这一行:

config.assets.raise_runtime_errors = true

我在发展中遗漏了什么?通常当我进行css更改并刷新页面时,它会更新更改,但这次没有。是否有一个特定的配置我可以传递给development.rb到确定是否总是为每个请求重新加载css?

1 个答案:

答案 0 :(得分:0)

也许您在开发计算机上运行了rake assets:precompile

这会导致问题,因为assets:precompile会生成资源并将其放在public/assets中。这些静态文件现在优先于动态编译的动态资产。因此,您可能会遇到没有任何更改提供给浏览器的情况。

简短回答:确保您已完全清除开发环境中的public/assets目录。并且永远不要在开发中运行rake assets:precompile