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 Attribute Summary collapse

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.



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

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

  require require_path unless require_path.nil?

  configure_legacy_mode_if_needed(safe_migration_dir, ar_migration_dir)
  @violations = MigrationViolations.new
end

Instance Attribute Details

#violationsObject (readonly)

Returns the value of attribute violations.



20
21
22
# File 'lib/nandi/safe_migration_enforcer.rb', line 20

def violations
  @violations
end

Instance Method Details

#runObject



34
35
36
37
38
39
40
41
42
# File 'lib/nandi/safe_migration_enforcer.rb', line 34

def run
  collect_violations

  if violations.any?
    raise MigrationLintingFailed, violations.to_error_message
  end

  true
end