Ruby on rails 当我不使用';我不想这样。为什么?

Ruby on rails 当我不使用';我不想这样。为什么?,ruby-on-rails,caching,Ruby On Rails,Caching,Rails正在缓存我的一个控制器的索引方法。这是一个非常简单的应用程序,每个应用程序只有2个控制器和少量操作。奇怪的是,我的应用程序中根本没有任何缓存,至少没有显式缓存。如果我重新启动passenger,页面将被取消缓存。rails是否执行某种自动页面缓存 public目录中没有文件 页面正在返回200标题 我的视图中没有缓存块(如果有必要,我使用haml) 我没有定义操作、控制器或页面缓存 请求正在命中rails,并通过生产日志进行验证 我的production.rb中包含以下内容: co

Rails正在缓存我的一个控制器的索引方法。这是一个非常简单的应用程序,每个应用程序只有2个控制器和少量操作。奇怪的是,我的应用程序中根本没有任何缓存,至少没有显式缓存。如果我重新启动passenger,页面将被取消缓存。rails是否执行某种自动页面缓存

  • public
    目录中没有文件
  • 页面正在返回
    200
    标题
  • 我的视图中没有缓存块(如果有必要,我使用haml)
  • 我没有定义操作、控制器或页面缓存
  • 请求正在命中rails,并通过生产日志进行验证
我的production.rb中包含以下内容:

config.cache\u classes=true
config.action\u controller.consumer\u all\u requests\u local=false config.action\u controller.perform\u caching=true config.action\u view.cache\u template\u load=true

问题是在我的视图中,
中没有显示任何
释放
,但如果我重新启动乘客,它会显示。我知道这失败的原因是因为我可以启动Rails控制台并执行
Release.ready
,这是视图中显示的命名范围,并且我实际上得到了一些结果


以下是相关代码:

型号/release.rb

class Release < ActiveRecord::Base
  default_scope :order => 'created_at DESC'
  named_scope :ready, :conditions => ['show_on <= ? AND is_deleted = ?', Time.now, false]
end
class ReleasesController < ApplicationController
  def index
    @releases = Release.ready
  end
end

如果公用文件夹中没有文件,我认为您的视图不会被缓存

现在有一段时间,Rails缓存了源视图(就像模型一样),所以如果在生产环境中对这些视图进行更改,则必须重新启动passenger,以便在通过浏览器查看时这些更改生效

如果我的回答中还有什么不清楚的地方,请告诉我


编辑:这里有一个链接,指向我认为发生更改时的更改日志:

如果公用文件夹中没有文件,我认为您的视图不会被缓存

现在有一段时间,Rails缓存了源视图(就像模型一样),所以如果在生产环境中对这些视图进行更改,则必须重新启动passenger,以便在通过浏览器查看时这些更改生效

如果我的回答中还有什么不清楚的地方,请告诉我


编辑:这里有一个链接,指向我认为发生更改时的更改日志:

谢谢,但我不想在应用程序运行时修改视图。我将发布一些代码。我不确定,但这可能是使用
时间的一个更大问题。现在在
命名的\u范围内
。通常,当在
命名的\u scope
中使用任何类型的“时间”时,您都希望在lambda中使用它,以便在调用时对其进行计算,而不是在应用程序启动时进行一次计算,然后再也不会进行计算。这里有一个到railscasts插曲的链接,因为我在上找不到任何相关的帖子:@ryeguy:很高兴我能帮上忙,而且你找到了答案。谢谢,但我不会在应用程序运行时修改视图。我将发布一些代码。我不确定,但这可能是使用
时间的一个更大问题。现在在
命名的\u范围内
。通常,当在
命名的\u scope
中使用任何类型的“时间”时,您都希望在lambda中使用它,以便在调用时对其进行计算,而不是在应用程序启动时进行一次计算,然后再也不会进行计算。这里有一个到railscasts插曲的链接,因为我在上找不到任何相关的帖子:@ryeguy:很高兴我能帮上忙,而且你找到了答案。干杯
%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