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