it-swarm-pt.tech

Ruby on Rails: limpa uma página em cache

Eu tenho um aplicativo RoR (Ruby v1.8.7; Rails v2.3.5) que está armazenando em cache uma página no ambiente de desenvolvimento. Isso não seria um problema, mas os elementos a da página em cache estão incorretos.

Eu não fiz nenhuma alteração no arquivo development.rb e não adicionei intencionalmente nenhum comando de cache aos controladores.

Eu tentei limpar caches de cookie e página do navegador (Firefox 3.5 no OSX) para este site (localhost). Eu também reiniciei o Mongrel. Nada parece ajudar.

O que estou perdendo?

75
craig

Esta linha em development.rb garante que o cache não esteja acontecendo.

config.action_controller.perform_caching             = false

Você pode limpar o cache Rails com

Rails.cache.clear

Dito isso - não estou convencido de que isso seja um problema de cache. Você está fazendo alterações na página e não as vê refletidas? Você não está, talvez, olhando para a versão ao vivo dessa página? Eu fiz isso uma vez (corar).

Atualizar:

Você pode chamar esse comando no console. Tem certeza de que está executando o aplicativo em desenvolvimento?

A única alternativa é que a página que você está tentando processar não é a página que está sendo processada.

Se você observar a saída do servidor, poderá ver o comando render quando a página for renderizada da seguinte forma:

Rendered shared_partials/_latest_featured_video (31.9ms)
Rendered shared_partials/_s_invite_friends (2.9ms)
Rendered layouts/_sidebar (2002.1ms)
Rendered layouts/_footer (2.8ms)
Rendered layouts/_busy_indicator (0.6ms)
115
Apie

rake tmp:cache:clear pode ser o que você está procurando.

102
Karen

Consegui resolver esse problema limpando o cache de recursos:

$ rake assets:clean
24
Dan

Verifique se há uma versão estática da sua página em/public e exclua-a, se ela estiver lá. Quando Rails 3.x armazena em cache páginas, deixa uma versão estática em sua pasta pública e carrega quando os usuários acessam seu site. Isso permanecerá mesmo após você limpar seu cache.

4
David Harbage

Se você está fazendo fragmentando o cache , você pode manualmente quebrar o cache atualizando sua chave de cache, assim:

Versão 1

<% cache ['cool_name_for_cache_key', 'v1'] do %>

Versão 2

<% cache ['cool_name_for_cache_key', 'v2'] do %>

Ou você pode ter o cache automaticamente redefinido com base no estado de um objeto não estático, como um objeto ActiveRecord, da seguinte forma:

<% cache @user_object do %>

Com este método ^, sempre que o objeto do usuário for atualizado, o cache será automaticamente redefinido.

2
jeffdill2