mirror of
https://github.com/mastodon/mastodon.git
synced 2024-12-22 14:05:42 +01:00
Add post-deployment migration system (#8182)
Adopted from GitLab CE. Generate new migration with:
rails g post_deployment_migration name_of_migration_here
By default they are run together with db:migrate. To not run them,
the env variable SKIP_POST_DEPLOYMENT_MIGRATIONS must be set
Code by Yorick Peterse <yorickpeterse@gmail.com>, see also:
83c8241160
This commit is contained in:
parent
b7091c6c0f
commit
018a9e4e7f
5 changed files with 41 additions and 0 deletions
|
@ -11,6 +11,7 @@ AllCops:
|
|||
- 'Vagrantfile'
|
||||
- 'vendor/**/*'
|
||||
- 'lib/json_ld/*'
|
||||
- 'lib/templates/**/*'
|
||||
|
||||
Bundler/OrderedGems:
|
||||
Enabled: false
|
||||
|
|
15
config/initializers/0_post_deployment_migrations.rb
Normal file
15
config/initializers/0_post_deployment_migrations.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
# Post deployment migrations are included by default. This file must be loaded
|
||||
# before other initializers as Rails may otherwise memoize a list of migrations
|
||||
# excluding the post deployment migrations.
|
||||
|
||||
unless ENV['SKIP_POST_DEPLOYMENT_MIGRATIONS']
|
||||
Rails.application.config.paths['db'].each do |db_path|
|
||||
path = Rails.root.join(db_path, 'post_migrate').to_s
|
||||
|
||||
Rails.application.config.paths['db/migrate'] << path
|
||||
|
||||
# Rails memoizes migrations at certain points where it won't read the above
|
||||
# path just yet. As such we must also update the following list of paths.
|
||||
ActiveRecord::Migrator.migrations_paths << path
|
||||
end
|
||||
end
|
0
db/post_migrate/.gitkeep
Normal file
0
db/post_migrate/.gitkeep
Normal file
17
lib/generators/post_deployment_migration_generator.rb
Normal file
17
lib/generators/post_deployment_migration_generator.rb
Normal file
|
@ -0,0 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails/generators'
|
||||
|
||||
module Rails
|
||||
class PostDeploymentMigrationGenerator < Rails::Generators::NamedBase
|
||||
def create_migration_file
|
||||
timestamp = Time.zone.now.strftime('%Y%m%d%H%M%S')
|
||||
|
||||
template 'migration.rb', "db/post_migrate/#{timestamp}_#{file_name}.rb"
|
||||
end
|
||||
|
||||
def migration_class_name
|
||||
file_name.camelize
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class <%= migration_class_name %> < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def change
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue