Problem z keszowaniem pod RoR 2.3.4

Mam poważny problem z keszowaniem. Otóż robiłem jak wskazano w tym tutorialu http://guides.rubyonrails.org/caching_with_rails.html, ale to keszowanie zachowuje się fatalnie, nie tak jak powinno.

Otóż, mam kontroler:

class DzialStrony::GaleriaController < ApplicationController
layout “inny_layout”

def index
tutaj jakis kod
end
end

i dodalem w ciele klasy:

caches_page :index

i teraz tak, zakeszowało mi, owszem… ale nie z layoutem, który mam ustawiony, ale z tym domyślnym. Mało tego, po usunięciu kodu od keszowania nadal strona jest zakeszowana.

Próbowałem ustawić opcję :layout, nic nie dało… Próbowałem keszować poprzez caches_action :index, też nic…

Mało tego, kiedy ustawię:

config.action_controller.perform_caching = false

to jest ok, keszowanie wyłączone, ale po włączeniu keszowania:

config.action_controller.perform_caching = true

wszystkie podstrony teraz co używają innego layoutu są zakeszowane z domyślnym layoutem, pomimo, że tam nie ustawiałem by keszowało te kontrolery (sic!).

Mam ustawine również:

config.cache_store = :file_store, ‘sciezka_do_katalogu_aplikacji/tmp/cache’
config.action_controller.page_cache_directory ‘sciezka_do_katalogu_aplikacj/tmp/cache’

ale w tej lokalizacji nie ma keszy. Sciezka jest poprawna, bo polecenie Rails.cache.write tworzy kesze…

  1. Jak usunąć wszystkie kesze?
  2. Jak skeszować tylko jedną akcję wraz z uwzględnieniem używanego layoutu?

Proszę o pomoc!

Acha, mam jeszcze pytanie: gdzie RoR domyślnie trzyma kesze?

Przypuszczam, że problem wynika stąd, że “keszowane” są całe strony wyjściowe “cośtam.html” w katalogu public. Jeśli serwer WWW widzi, że jest taka strona wygenerowana, to (zazwyczaj, zależy od szczegółowej konfiguracji) w ogóle nie odpytuje Railsów, tylko rzuca to co tam znajdzie. Dlatego jak wcześniej miałeś layout domyślny, to po prostu zostało “zkeszowane” z tym domyślnym i tak to sobie pozostało. Spróbuje usunąć te wygenerowane strony z public i zobacz czy dalej jest ten domyślny layout.

Ogólna uwaga - debugowanie keszowania jest niebanalne.