mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Cleanup migrations with timestamps in the future
A future-dated migration was accidently introduced by me in45c399f0
. This was removed inb9762afc
, but other migrations had already been generated based on its incorrect date. This commit removes the offending data in the schema_migrations table, and corrects the version in the published_pages migration. This commit also adds a check to db:migrate which raises an error when invalid migration timestamps are used.
This commit is contained in:
parent
159fc41f40
commit
e29afa200a
@ -0,0 +1,25 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class AddPublicFieldToPublishedPages < ActiveRecord::Migration[6.0]
|
||||||
|
def up
|
||||||
|
# Delete the record of https://github.com/discourse/discourse/commit/b9762afc106ee9b18d1ac33ca3cac281083e428e
|
||||||
|
execute <<~SQL
|
||||||
|
DELETE FROM schema_migrations WHERE version='20201006172700'
|
||||||
|
SQL
|
||||||
|
|
||||||
|
# Delete the reference to the incorrectly versioned version of this migration
|
||||||
|
execute <<~SQL
|
||||||
|
DELETE FROM schema_migrations WHERE version='20201006172701'
|
||||||
|
SQL
|
||||||
|
|
||||||
|
# Using IF NOT EXISTS because the version number of this migration was changed
|
||||||
|
# Therefore some sites may have already added the column
|
||||||
|
execute <<~SQL
|
||||||
|
ALTER TABLE "published_pages" ADD COLUMN IF NOT EXISTS "public" boolean DEFAULT FALSE NOT NULL
|
||||||
|
SQL
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
raise ActiveRecord::IrreversibleMigration
|
||||||
|
end
|
||||||
|
end
|
@ -1,7 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
class AddPublicFieldToPublishedPages < ActiveRecord::Migration[6.0]
|
|
||||||
def change
|
|
||||||
add_column :published_pages, :public, :boolean, null: false, default: false
|
|
||||||
end
|
|
||||||
end
|
|
@ -187,6 +187,12 @@ end
|
|||||||
|
|
||||||
# we need to run seed_fu every time we run rake db:migrate
|
# we need to run seed_fu every time we run rake db:migrate
|
||||||
task 'db:migrate' => ['load_config', 'environment', 'set_locale'] do |_, args|
|
task 'db:migrate' => ['load_config', 'environment', 'set_locale'] do |_, args|
|
||||||
|
migrations = ActiveRecord::Base.connection.migration_context.migrations
|
||||||
|
now_timestamp = Time.now.utc.strftime('%Y%m%d%H%M%S').to_i
|
||||||
|
epoch_timestamp = Time.at(0).utc.strftime('%Y%m%d%H%M%S').to_i
|
||||||
|
|
||||||
|
raise "Migration #{migrations.last.version} is timestamped in the future" if migrations.last.version > now_timestamp
|
||||||
|
raise "Migration #{migrations.first.version} is timestamped before the epoch" if migrations.first.version < epoch_timestamp
|
||||||
|
|
||||||
ActiveRecord::Tasks::DatabaseTasks.migrate
|
ActiveRecord::Tasks::DatabaseTasks.migrate
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user