Class: Curator::Migrator

Inherits:
Object
  • Object
show all
Defined in:
lib/curator/migrator.rb

Instance Method Summary collapse

Constructor Details

#initialize(collection_name) ⇒ Migrator

Returns a new instance of Migrator.



3
4
5
6
# File 'lib/curator/migrator.rb', line 3

def initialize(collection_name)
  @collection_name = collection_name
  @applicable_migrations = {}
end

Instance Method Details

#_all_migrationsObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/curator/migrator.rb', line 19

def _all_migrations
  files = Dir.glob("#{File.join(Curator.config.migrations_path, @collection_name)}/*.rb")

  files.map do |file|
    load file
    migration_version, name = file.scan(/([0-9]+)_([_a-z0-9]*).rb/).first
    klass = name.camelize.constantize
    klass.new(migration_version.to_i)
  end
end

#_applicable_migrations(current_version) ⇒ Object



15
16
17
# File 'lib/curator/migrator.rb', line 15

def _applicable_migrations(current_version)
  @applicable_migrations[current_version] ||= _all_migrations.select { |migration| migration.version > current_version }.sort_by(&:version)
end

#migrate(attributes) ⇒ Object



8
9
10
11
12
13
# File 'lib/curator/migrator.rb', line 8

def migrate(attributes)
  migrations = _applicable_migrations(attributes["version"].to_i)
  migrations.inject(attributes) do |migrated_attributes, migration|
    migration.migrate(migrated_attributes).merge("version" => migration.version)
  end
end