ruby - pasa - Borrar el caché de ActiveRecord
si borro el cache de whatsapp se borran las conversaciones (4)
Estoy creando una aplicación de línea de comandos utilizando ActiveRecord 3.0 (sin rieles). ¿Cómo borro el caché de consultas que mantiene ActiveRecord?
A menudo, cuando ve el almacenamiento en caché de las consultas de la base de datos, su base de datos realiza el almacenamiento en caché, no ActiveRecord, lo que significa que necesita borrar la memoria caché y los buffers en el nivel de db, no el nivel de ActiveRecord.
Por ejemplo, para borrar la memoria caché y los buffers de Postgres en Mac, haría sudo purge
, lo que obliga a que la memoria caché del disco se vacíe y se vacíe.
Para borrar la memoria caché y los buffers de Postgres en Linux, debería cerrar Postgres, soltar los cachés y volver a iniciar Postgres de nuevo:
service postgresql stop
sync
echo 3 > /proc/sys/vm/drop_caches
service postgresql start
Otras lecturas:
A una primera aproximación:
ActiveRecord::Base.connection.query_cache.clear
Eche un vistazo al método clear_query_cache
en http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/QueryCache.html
Usamos:
ActiveRecord::Base.connection.query_cache.clear
(ActiveRecord::Base.connection.tables - %w[schema_migrations versions]).each do |table|
table.classify.constantize.reset_column_information rescue nil
end
Pero no estoy seguro de que esto sea suficiente.