Rails正在缓存我的一个控制器的索引方法。这是一个非常简单的应用程序,每个只有2个控制器和少数几个操作。奇怪的是我在我的应用程序中根本没有任何缓存,至少没有明确说明。如果我重新启动乘客,页面将被缓存。 rails是否会进行某种自动页面缓存?
public
目录200
标题我的production.rb中有以下内容:
config.cache_classes = true
config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.action_view.cache_template_loading = true
问题是我的视图中Releases
没有显示任何table
,但如果我重新启动乘客,则会显示Release.ready
。我知道这是失败的原因是因为我可以启动Rails控制台并执行class Release < ActiveRecord::Base
default_scope :order => 'created_at DESC'
named_scope :ready, :conditions => ['show_on <= ? AND is_deleted = ?', Time.now, false]
end
,这是在视图中显示的命名范围,我实际上得到了一些结果。
以下是相关代码:
模型/ release.rb
class ReleasesController < ApplicationController
def index
@releases = Release.ready
end
end
控制器/ releases_controller.rb
%table{:border => 1}
%tr
%th Date
%th Title
%th Artist
%th Song
- @releases.each do |release|
- @release = release
%tr[release]
%td
= link_to_remote "delete", :url => release, :method => :delete , :confirm => 'Remove?'
= release.created_at.to_date.to_s(:long_ordinal)
%td= link_to release.title, release.url
%td= in_place_editor_field :release, :artist
%td= in_place_editor_field :release, :song
视图/释放/ index.html.haml
{{1}}
答案 0 :(得分:1)
如果公用文件夹中没有文件,我认为您的视图不会被缓存。
现在有一段时间了,Rails已经缓存了视图源(就像模型一样)所以如果你对那些视图进行了更改,那么在生产中你必须重新启动乘客才能使这些更改在你通过浏览器查看时生效
如果我的回答中有任何问题仍然不清楚,请告诉我。
编辑:以下是我认为发生更改日志的链接:Ruby on Rails 2.3 Release Notes