I\'m building a command line application using ActiveRecord 3.0 (without rails). How do I clear the query cache that ActiveRecord maintains?
We use:
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
But I am not certain even this is enough.
To a first approximation:
ActiveRecord::Base.connection.query_cache.clear
Have a look at the method clear_query_cache
in http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/QueryCache.html
Oftentimes when you see caching of database queries, your db is doing the caching, not ActiveRecord, which means you need to clear the cache and buffers at the db level, not the ActiveRecord level.
For example, to clear Postgres' cache and buffers on Mac, you would do sudo purge
, which forces the disk cache to be flushed and emptied.
To clear Postgres' cache and buffers on Linux, you would shut down postgres, drop the caches, and start postgres back up again:
service postgresql stop
sync
echo 3 > /proc/sys/vm/drop_caches
service postgresql start
Further reading: