summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2016-10-06 19:14:57 +0100
committerNick Thomas <nick@gitlab.com>2016-10-06 19:14:57 +0100
commit5766e0661dd39198bdafeb53678830df4c3c5e3e (patch)
tree29676e904714436b3418eda6d757d36aba0c02c7
parentdcfda304aa8c06f427cb5672ceb4e070047436be (diff)
downloadgitlab-ce-5766e0661dd39198bdafeb53678830df4c3c5e3e.tar.gz
Memoize ActiveRecord::Migrator.migrations in tests
-rw-r--r--config/initializers/ar_speed_up_migration_checking.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/config/initializers/ar_speed_up_migration_checking.rb b/config/initializers/ar_speed_up_migration_checking.rb
new file mode 100644
index 00000000000..1fe5defc01d
--- /dev/null
+++ b/config/initializers/ar_speed_up_migration_checking.rb
@@ -0,0 +1,18 @@
+if Rails.env.test?
+ require 'active_record/migration'
+
+ module ActiveRecord
+ class Migrator
+ class << self
+ alias_method :migrations_unmemoized, :migrations
+
+ # This method is called a large number of times per rspec example, and
+ # it reads + parses `db/migrate/*` each time. Memoizing it can save 0.5
+ # seconds per spec.
+ def migrations(paths)
+ @migrations ||= migrations_unmemoized(paths)
+ end
+ end
+ end
+ end
+end