module Spina::Admin::Conferences::Migration::Renaming

Public Instance Methods

detect_migration(name) click to toggle source
# File lib/spina/admin/conferences/migration/renaming.rb, line 71
def detect_migration(name)
  Dir[engine_migration_glob(name)].first
end
engine_migration_glob(name) click to toggle source
# File lib/spina/admin/conferences/migration/renaming.rb, line 67
def engine_migration_glob(name)
  "#{migrations_path}/**/*_#{name}.spina{_admin,}_conferences_engine.rb"
end
migration_hash(name) click to toggle source
# File lib/spina/admin/conferences/migration/renaming.rb, line 59
def migration_hash(name)
  { name: name, file: detect_migration(name) }
end
migrations_path() click to toggle source
# File lib/spina/admin/conferences/migration/renaming.rb, line 63
def migrations_path
  @migrations_path || ActiveRecord::Tasks::DatabaseTasks.migrations_paths.first
end
raise_on_duplicate_migrations!() click to toggle source
# File lib/spina/admin/conferences/migration/renaming.rb, line 27
def raise_on_duplicate_migrations!
  raise DuplicateMigrationsError, @stale_migrations if @stale_migrations.any?
end
rename_migration(name, to:) click to toggle source
# File lib/spina/admin/conferences/migration/renaming.rb, line 18
def rename_migration(name, to:)
  config.after_initialize do
    migration = {}
    migration[:old] = migration_hash(name)
    migration[:new] = migration_hash(to)
    @stale_migrations << migration if [migration[:old], migration[:new]].pluck(:file).all?(&:present?)
  end
end