Class: Slick::Database::Migrator

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

Instance Method Summary collapse

Constructor Details

#initialize(database) ⇒ Migrator

Returns a new instance of Migrator.



4
5
6
7
8
9
10
# File 'lib/slick/database/migrator.rb', line 4

def initialize(database)
    @database = database

    if !database.slick_applied_migrations.exist?
        database.slick_applied_migrations.add_column(:schema_version, :integer) 
    end
end

Instance Method Details

#current_schema_versionObject



12
13
14
15
16
17
18
19
# File 'lib/slick/database/migrator.rb', line 12

def current_schema_version
    slick_applied_migration = @database.slick_applied_migrations.order_by(:schema_version, :desc).first(:cache => "schema")
    if slick_applied_migration
        slick_applied_migration.schema_version
    else
        -1
    end
end

#latest_schema_versionObject



21
22
23
# File 'lib/slick/database/migrator.rb', line 21

def latest_schema_version
    migrations.length > 0 ? migrations.last.schema_version : -1
end

#migrate(to_schema_version = latest_schema_version) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/slick/database/migrator.rb', line 25

def migrate(to_schema_version = latest_schema_version)
    if to_schema_version > current_schema_version
        migrate_up(to_schema_version)
    elsif to_schema_version < current_schema_version
        migrate_down(to_schema_version)
    else
        puts "Migrations up-to-date"
    end
end