Skip to content

Instantly share code, notes, and snippets.

Created August 3, 2012 10:28
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save tvdeyen/3246525 to your computer and use it in GitHub Desktop.
Fast rails database truncation with sqlite support
def truncate_all_tables
config = ActiveRecord::Base.configurations[::Rails.env]
connection = ActiveRecord::Base.connection
connection.disable_referential_integrity do
connection.tables.each do |table_name|
next if connection.select_value("SELECT count(*) FROM #{table_name}") == 0
case config["adapter"]
when "mysql", "mysql2", "postgresql"
connection.execute("TRUNCATE #{table_name}")
when "sqlite", "sqlite3"
connection.execute("DELETE FROM #{table_name}")
connection.execute("DELETE FROM sqlite_sequence where name='#{table_name}'")
connection.execute("VACUUM") if config["adapter"] == "sqlite3"
Copy link

This didn't work for me on heroku. I had to change line 2 to

config = Rails.configuration.database_configuration

and change all instances of




Also, see my adaptation of this code for truncating a single table:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment