Class: ZeroDowntimeMigrations::Validation

Inherits:
Object
  • Object
show all
Defined in:
lib/zero_downtime_migrations/validation.rb,
lib/zero_downtime_migrations/validation/add_index.rb,
lib/zero_downtime_migrations/validation/find_each.rb,
lib/zero_downtime_migrations/validation/add_column.rb,
lib/zero_downtime_migrations/validation/ddl_migration.rb,
lib/zero_downtime_migrations/validation/mixed_migration.rb

Direct Known Subclasses

AddColumn, AddIndex, DdlMigration, FindEach, MixedMigration

Defined Under Namespace

Classes: AddColumn, AddIndex, DdlMigration, FindEach, MixedMigration

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(migration, *args) ⇒ Validation

Returns a new instance of Validation.



16
17
18
19
# File 'lib/zero_downtime_migrations/validation.rb', line 16

def initialize(migration, *args)
  @migration = migration
  @args = args
end

Instance Attribute Details

#argsObject (readonly)

Returns the value of attribute args.



14
15
16
# File 'lib/zero_downtime_migrations/validation.rb', line 14

def args
  @args
end

#migrationObject (readonly)

Returns the value of attribute migration.



14
15
16
# File 'lib/zero_downtime_migrations/validation.rb', line 14

def migration
  @migration
end

Class Method Details

.validate!(type, *args) ⇒ Object



3
4
5
6
7
8
9
10
11
12
# File 'lib/zero_downtime_migrations/validation.rb', line 3

def self.validate!(type, *args)
  return unless Migration.migrating? && Migration.unsafe?

  begin
    validator = type.to_s.classify
    const_get(validator).new(Migration.current, *args).validate!
  rescue NameError
    raise UndefinedValidationError.new(validator)
  end
end

Instance Method Details

#error!(message) ⇒ Object

Raises:

  • (error)


21
22
23
24
25
26
# File 'lib/zero_downtime_migrations/validation.rb', line 21

def error!(message)
  error = UnsafeMigrationError
  debug = "#{error}: #{migration_name} is unsafe!"
  message = [message, debug, nil].join("\n")
  raise error.new(message)
end

#migration_nameObject



28
29
30
# File 'lib/zero_downtime_migrations/validation.rb', line 28

def migration_name
  migration.class.name
end

#optionsObject



32
33
34
# File 'lib/zero_downtime_migrations/validation.rb', line 32

def options
  args.last.is_a?(Hash) ? args.last : {}
end

#validate!Object

Raises:

  • (NotImplementedError)


36
37
38
# File 'lib/zero_downtime_migrations/validation.rb', line 36

def validate!
  raise NotImplementedError
end