のソースを見るとcaches_page
、キャッシュ ファイルの拡張子は、パスにピリオド ( ) が含まれている場合に見つかった "拡張子" であると自動的に想定されます.
。このロジックは、実際には別のメソッドにありpage_cache_file
ます:
def page_cache_file(path, extension)
name = (path.empty? || path == "/") ? "/index" : URI.parser.unescape(path.chomp('/'))
unless (name.split('/').last || name).include? '.'
name << (extension || self.page_cache_extension)
end
return name
end
必要に応じて、このメソッドをオーバーライドして、コントローラー内で少し異なる動作をさせるか、デフォルトの ActionController::Base 実装を使用することができます。考えられる例を次に示します。
class MyController < ApplicationController
class << self
private
# override the ActionController method
def page_cache_file(path, extension)
# use the default logic unless this is a /sites/:domainname request
# (may need to tweak the regex)
super unless path =~ %r{/sites/.*}
# otherwise customize logic to always include the extension
name = (path.empty? || path == "/") ? "/index" : URI.parser.unescape(path.chomp('/'))
name << (extension || self.page_cache_extension)
return name
end
end
end