From 5a205a9e5c61392cee99bb9580f40b8ac7ef5e75 Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Tue, 1 Mar 2016 19:22:37 -0600 Subject: [PATCH] Add Truncate Almost All Tables as a rails til --- README.md | 1 + rails/truncate-almost-all-tables.md | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 rails/truncate-almost-all-tables.md diff --git a/README.md b/README.md index b4378e3..1721a5a 100644 --- a/README.md +++ b/README.md @@ -229,6 +229,7 @@ _351 TILs and counting..._ - [Show Pending Migrations](rails/show-pending-migrations.md) - [Show Rails Models With Pry](rails/show-rails-models-with-pry.md) - [Show Rails Routes With Pry](rails/show-rails-routes-with-pry.md) +- [Truncate Almost All Tables](rails/truncate-almost-all-tables.md) ### Ruby diff --git a/rails/truncate-almost-all-tables.md b/rails/truncate-almost-all-tables.md new file mode 100644 index 0000000..cd23796 --- /dev/null +++ b/rails/truncate-almost-all-tables.md @@ -0,0 +1,19 @@ +# Truncate Almost All Tables + +The +[`database_cleaner`](https://github.com/DatabaseCleaner/database_cleaner) +gem is a handy way to make sure you have a consistent database context for +each test example or suite. One `database_cleaner` strategy that can be used +is the `truncation` strategy. This truncates the data from all the tables by +default. This is not ideal for *fixed* tables that contain domain-specific +data because you end up having to do way more test setup than should be +necessary. Fortunately, specific tables can be excepted by the truncation +strategy using the `except` option. + +For instance, if we have a standard set of roles for users of our +application, we can except that table from truncation with a line like the +following in our `rails_helper.rb` file: + +``` +DatabaseCleaner.strategy = :truncation, {:except => %w[roles]} +```