Clean up the post deployment migration generator (#24233)
parent
3c7053a2db
commit
a2a66300d9
6 changed files with 62 additions and 25 deletions
@ -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 |
@ -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 new issue