with rails memcache development cache ruby-on-rails ruby caching rspec

ruby on rails - memcache - ¿Rails.cache se purga entre las pruebas?



rails cache development (2)

Rails.cache en caché el mapeo id / path usando Rails.cache en una aplicación Rails 3.2. En algunas máquinas funciona bien, pero en los demás los valores son incorrectos. La causa es difícil de seguir, así que tengo algunas preguntas sobre Rails.cache . ¿Se purga entre pruebas? ¿Es posible que los valores almacenados en caché en modo de desarrollo se usen en el modo de prueba? Si no se purga, ¿cómo podría hacerlo antes de ejecutar las especificaciones?

Mi tienda de caché es la configuración es:

#in: config/environments/development.rb config.cache_store = :memory_store, {:size => 64.megabytes} #in: config/environments/production.rb # config.cache_store = :mem_cache_store


Añadir:

before(:all) do Rails.cache.clear end

tener el caché borrado antes de ejecutar cada archivo de especificación.

Añadir:

before(:each) do Rails.cache.clear end

tener el caché despejado antes de cada especificación

Puede poner esto dentro de spec/spec_helper.rb dentro del bloque RSpec.configure para aplicarlo globalmente (se recomienda sobre dispersarlo por archivo de especificación o caso).

RSpec por defecto no limpia esa caché automáticamente.


Un método más eficiente (y más fácil) es configurar el caché del entorno de prueba para usar NullStore:

# config/environments/test.rb: config.cache_store = :null_store

NullStore asegura que nunca se almacenará nada en la memoria caché.

Por ejemplo, en el siguiente código, siempre caerá al bloque y devolverá la hora actual:

Rails.cache.fetch(''time'') { Time.now }

Consulte también la guía Rails Caching: http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-nullstore