class Kafo::Migrations

Attributes

migrations[R]

Public Class Methods

new(migrations_dir) click to toggle source
# File lib/kafo/migrations.rb, line 9
def initialize(migrations_dir)
  @migrations_dir = migrations_dir
  @migrations = {}
  @applied_file = File.join(@migrations_dir, '.applied')
  load_migrations
end

Public Instance Methods

add_migration(name, &block) click to toggle source
# File lib/kafo/migrations.rb, line 30
def add_migration(name, &block)
  @migrations[name] = block
end
applied() click to toggle source
# File lib/kafo/migrations.rb, line 16
def applied
  @applied ||= load_applied
end
load_migrations() click to toggle source
# File lib/kafo/migrations.rb, line 20
def load_migrations
  Dir.glob(@migrations_dir + "/*.rb").each do |file|
    next if applied.include?(File.basename(file))
    KafoConfigure.logger.debug "Loading migration #{file}"
    migration = File.read(file)
    migration_block = proc { instance_eval(migration, file, 1) }
    add_migration(file, &migration_block)
  end
end
run(scenario, answers) click to toggle source
# File lib/kafo/migrations.rb, line 34
def run(scenario, answers)
  @migrations.keys.sort.each do |name|
    KafoConfigure.logger.debug "Executing migration #{name}"
    migration = @migrations[name]
    scenario, answers = Kafo::MigrationContext.execute(scenario, answers, &migration)
    applied << File.basename(name.to_s)
  end
  return scenario, answers
end
store_applied() click to toggle source
# File lib/kafo/migrations.rb, line 44
def store_applied
  File.open(@applied_file, 'w') { |f| f.write(applied.to_yaml) }
end

Private Instance Methods

load_applied() click to toggle source
# File lib/kafo/migrations.rb, line 50
def load_applied
  File.exist?(@applied_file) ? YAML.load_file(@applied_file) : []
end