Clean up the post deployment migration generator (#24233)
This commit is contained in:
parent
3c7053a2db
commit
a2a66300d9
6 changed files with 62 additions and 25 deletions
10
lib/generators/post_deployment_migration/USAGE
Normal file
10
lib/generators/post_deployment_migration/USAGE
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
Description:
|
||||||
|
Generate a Rails migration in the db/post_migrate/ dir.
|
||||||
|
|
||||||
|
Interacts with the post_deployment_migrations initializer.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
bin/rails generate post_deployment_migration IsolateChanges
|
||||||
|
|
||||||
|
Creates a migration in db/post_migrate/<timestamp>_isolate_changes.rb
|
||||||
|
which will have `disable_ddl_transaction!` and a `change` method included.
|
|
@ -0,0 +1,17 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails/generators/active_record'
|
||||||
|
|
||||||
|
class PostDeploymentMigrationGenerator < Rails::Generators::NamedBase
|
||||||
|
source_root File.expand_path('templates', __dir__)
|
||||||
|
|
||||||
|
include Rails::Generators::Migration
|
||||||
|
|
||||||
|
def create_post_deployment_migration
|
||||||
|
migration_template 'migration.erb', "db/post_migrate/#{file_name}.rb"
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.next_migration_number(path)
|
||||||
|
ActiveRecord::Generators::Base.next_migration_number(path)
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
|
||||||
|
disable_ddl_transaction!
|
||||||
|
|
||||||
|
def change
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,17 +0,0 @@
|
||||||
# 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
|
|
|
@ -1,8 +0,0 @@
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
class <%= migration_class_name %> < ActiveRecord::Migration[5.2]
|
|
||||||
disable_ddl_transaction!
|
|
||||||
|
|
||||||
def change
|
|
||||||
end
|
|
||||||
end
|
|
27
spec/generators/post_deployment_migration_generator_spec.rb
Normal file
27
spec/generators/post_deployment_migration_generator_spec.rb
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
require 'rails/generators/testing/behaviour'
|
||||||
|
require 'rails/generators/testing/assertions'
|
||||||
|
|
||||||
|
require 'generators/post_deployment_migration/post_deployment_migration_generator'
|
||||||
|
|
||||||
|
describe PostDeploymentMigrationGenerator, type: :generator do
|
||||||
|
include Rails::Generators::Testing::Behaviour
|
||||||
|
include Rails::Generators::Testing::Assertions
|
||||||
|
include FileUtils
|
||||||
|
|
||||||
|
tests described_class
|
||||||
|
destination File.expand_path('../../tmp', __dir__)
|
||||||
|
before { prepare_destination }
|
||||||
|
after { rm_rf(destination_root) }
|
||||||
|
|
||||||
|
describe 'the migration' do
|
||||||
|
it 'generates expected file' do
|
||||||
|
run_generator %w(Changes)
|
||||||
|
|
||||||
|
assert_migration('db/post_migrate/changes.rb', /disable_ddl/)
|
||||||
|
assert_migration('db/post_migrate/changes.rb', /change/)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue