From bbbb09a6fb1f09e1296543eb72ab80179c221856 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 17 Feb 2016 17:47:47 +1100 Subject: [PATCH] FEATURE: start tracking information about migrations that run This commit adds a new tracking table that lets us know - When a migration ran - What version Discourse was at - How long it took - What version Rails was at The built in tracking in Rails is very limited, does not track this info --- ...0225050318_add_schema_migration_details.rb | 30 +++++++++++ .../schema_migration_details.rb | 54 +++++++++++++++++++ .../schema_migration_details_spec.rb | 32 +++++++++++ 3 files changed, 116 insertions(+) create mode 100644 db/migrate/20000225050318_add_schema_migration_details.rb create mode 100644 lib/freedom_patches/schema_migration_details.rb create mode 100644 spec/components/freedom_patches/schema_migration_details_spec.rb diff --git a/db/migrate/20000225050318_add_schema_migration_details.rb b/db/migrate/20000225050318_add_schema_migration_details.rb new file mode 100644 index 000000000..dbf4959b1 --- /dev/null +++ b/db/migrate/20000225050318_add_schema_migration_details.rb @@ -0,0 +1,30 @@ +class AddSchemaMigrationDetails < ActiveRecord::Migration + def up + # schema_migrations table is way too thin, does not give info about + # duration of migration or the date it happened, this migration together with the + # monkey patch adds a lot of information to the migration table + + create_table :schema_migration_details do |t| + t.string :version, null: false + t.string :name + t.string :hostname + t.string :git_version + t.string :rails_version + t.integer :duration + t.string :direction # this really should be a pg enum type but annoying to wire up for little gain + t.datetime :created_at, null: false + end + + add_index :schema_migration_details, [:version] + + execute("INSERT INTO schema_migration_details(version, created_at) + SELECT version, current_timestamp + FROM schema_migrations + ORDER BY version + ") + end + + def down + drop_table :schema_migration_details + end +end diff --git a/lib/freedom_patches/schema_migration_details.rb b/lib/freedom_patches/schema_migration_details.rb new file mode 100644 index 000000000..bbae956c1 --- /dev/null +++ b/lib/freedom_patches/schema_migration_details.rb @@ -0,0 +1,54 @@ +module FreedomPatches + module SchemaMigrationDetails + def exec_migration(conn, direction) + rval = nil + + time = Benchmark.measure do + rval=super + end + + sql = < 0 + expect(info.git_version).to eq Discourse.git_version + expect(info.direction).to eq "up" + expect(info.rails_version).to eq Rails.version + expect(info.filename).to eq migration.filename + expect(info.name).to eq "awesome_migration" + end +end