Pregunta

No estoy muy seguro de cómo asegurar mi caché está trabajando, pero estoy bastante seguro de que no lo es. Tengo un controlador de usuarios con una acción índice que estoy almacenamiento en caché de la acción hasta que se crea un nuevo usuario. Aquí está el código:

UsersController < ApplicationController
  caches_action :index
  def index
    @users = User.all
  end

  def create
    expires_action :index
    ...
  end
end

Ahora, en los registros de mi cuando accedo a la acción index, veo:

Cached fragment hit: views/localhost:3000/users (0.0ms)
Filter chain halted as [#<ActionController::Filters::AroundFilter:0xe2fbd3 @identifier=nil, @kind=:filter, @options={:only=>#<Set: {"index", "new"}>, :if=>nil, :unless=>nil}, @method=#<Proc:0x186cb11@/Users/bradrobertson/.rvm/gems/jruby-1.5.3/gems/actionpack-2.3.10/lib/action_controller/caching/actions.rb:64>>] did_not_yield.

No estoy seguro de lo que el filter chain halted ... did_not_yield se trata y también veo que select * from users que ... se está llamado cada vez, que no es lo que esperaba.

Puede alguien me ilumine en cuanto a lo que está pasando aquí y por qué esto no se está comportando como me esperaba? es decir. por qué el User.all estaría funcionando cuando la salida de que toda acción debe haber sido almacenado en caché?

¿Fue útil?

Solución

Los medios de mensajes filter chain halted que hay un filtro de alrededor que se detiene la acción de llamar. Esto es probable que sea el caché de la acción, que detiene la acción real del suceso. No lo hizo rendimiento a la acción, porque encontró algo en la memoria caché, como se sugiere en el mensaje por encima de ella.

El User.all no debe hacerse funcionar en absoluto, porque está en la acción, pero ninguna antes filtros conseguirá ejecutar. Si la página está detrás de algún tipo de autenticación, que la comprobación de autenticación podría haber desencadenado la llamada SQL. Así que es posible que desee volver a comprobar que el registro de SQL realmente viene.

Además, la sintaxis apropiada (de acuerdo con los carriles de guía al menos) por cumplir es:

expire_action :action => :index

Más información: raíles de guía

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top