Class: Nandi::SafeMigrationEnforcer

Inherits:
Object
  • Object
show all
Defined in:
lib/nandi/safe_migration_enforcer.rb

Defined Under Namespace

Classes: MigrationLintingFailed

Constant Summary collapse

DEFAULT_SAFE_MIGRATION_DIR =
"db/safe_migrations"
DEFAULT_AR_MIGRATION_DIR =
"db/migrate"
DEFAULT_FILE_SPEC =
"all"

Instance Method Summary collapse

Constructor Details

#initialize(require_path: nil, safe_migration_dir: DEFAULT_SAFE_MIGRATION_DIR, ar_migration_dir: DEFAULT_AR_MIGRATION_DIR, files: DEFAULT_FILE_SPEC) ⇒ SafeMigrationEnforcer

Returns a new instance of SafeMigrationEnforcer.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/nandi/safe_migration_enforcer.rb', line 19

def initialize(require_path: nil,
               safe_migration_dir: DEFAULT_SAFE_MIGRATION_DIR,
               ar_migration_dir: DEFAULT_AR_MIGRATION_DIR,
               files: DEFAULT_FILE_SPEC)
  @safe_migration_dir = safe_migration_dir
  @ar_migration_dir = ar_migration_dir
  @files = files

  require require_path unless require_path.nil?

  Nandi.configure do |c|
    c.migration_directory = @safe_migration_dir
    c.output_directory = @ar_migration_dir
  end
end

Instance Method Details

#runObject



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/nandi/safe_migration_enforcer.rb', line 35

def run
  safe_migrations = matching_migrations(@safe_migration_dir)
  ar_migrations = matching_migrations(@ar_migration_dir)

  return true if safe_migrations.none? && ar_migrations.none?

  enforce_no_ungenerated_migrations!(safe_migrations, ar_migrations)
  enforce_no_hand_written_migrations!(safe_migrations, ar_migrations)
  enforce_no_hand_edited_migrations!(ar_migrations)
  enforce_no_out_of_date_migrations!(safe_migrations)

  true
end