为什么Rails的资产缓存在暂存环境中不适用于JS?

时间:2009-09-21 18:11:07

标签: javascript ruby-on-rails caching

我将我的CSS和JS设置为RAILS_ROOT/app/views/layouts/application.html.erb中的缓存:

<%= stylesheet_link_tag 'reset', ...
                        'layout', 'colors', :cache => 'cache/all' %>
<%= javascript_include_tag 'jquery-1.3.2.min', ...
                           'application', :cache => 'cache/all' %>

如果我在开发环境中打开缓存,一切都按计划运行:

# in RAILS_ROOT/config/environments/development.rb:
config.action_controller.perform_caching = true

但是,当我在分段中放置相同的行时,/stylesheets/cache/all.css生成正确,但/javascripts/cache/all.css不是。尽管如此,该行在HTML中生成:

<script src="/javascripts/cache/all.js?1253556008" type="text/javascript"></script>

转到那个URL产生一个空的JS文件(虽然不是404,奇怪)。文件系统上没有文件(在RAILS_ROOT/public/javascripts/cache/all.js下)。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这是一个很长的镜头,但尝试删除all.js文件,看看该应用程序是否正确重建它。一旦文件到位,Rails似乎永远不会尝试重建它,所以如果由于某些错误或其他原因它可能已被遗留在那里而形成得很糟糕。