class RailsAsyncMigrations::Migration::Run
Attributes
direction[R]
migration[R]
version[R]
Public Class Methods
new(direction, version)
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 7 def initialize(direction, version) @direction = direction @version = version @migration = migration_from version ensure_data_consistency require "#{Rails.root}/#{migration.filename}" if defined? Rails end
Public Instance Methods
perform()
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 16 def perform unlock_migration_methods delete_migration_state run_migration delete_migration_state lock_migration_methods end
Private Instance Methods
class_name()
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 46 def class_name migration.name.constantize end
delete_migration_state()
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 42 def delete_migration_state schema_migration&.delete end
ensure_data_consistency()
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 66 def ensure_data_consistency unless migration raise RailsAsyncMigrations::Error, "No migration from version `#{version}`" end end
lock_migration_methods()
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 60 def lock_migration_methods locked_methods.each do |method_name| Migration::Lock.new(class_name, method_name).perform end end
locked_methods()
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 50 def locked_methods RailsAsyncMigrations.config.locked_methods end
migration_from(version)
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 26 def migration_from(version) Connection::ActiveRecord.new(direction).migration_from version end
migrator_instance()
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 34 def migrator_instance @migrator_instance ||= ::ActiveRecord::Migrator.new(direction.to_sym, [migration]) end
run_migration()
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 30 def run_migration migrator_instance.migrate end
schema_migration()
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 38 def schema_migration @schema_migration ||= ActiveRecord::SchemaMigration.find_by(version: version) end
unlock_migration_methods()
click to toggle source
# File lib/rails_async_migrations/migration/run.rb, line 54 def unlock_migration_methods locked_methods.each do |method_name| Migration::Unlock.new(class_name, method_name).perform end end