Class: MigrationBundler::Migrations

Inherits:
Object
  • Object
show all
Defined in:
lib/migration_bundler/migrations.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, database) ⇒ Migrations

Returns a new instance of Migrations.



5
6
7
8
9
10
# File 'lib/migration_bundler/migrations.rb', line 5

def initialize(path, database)
  @path = path
  @database = database
  migration_paths = Dir.glob(File.join(path, "*#{database.class.migration_ext}"))
  @paths_by_version = MigrationBundler::Util.migrations_by_version(migration_paths)
end

Instance Attribute Details

#databaseObject (readonly)

Returns the value of attribute database.



3
4
5
# File 'lib/migration_bundler/migrations.rb', line 3

def database
  @database
end

#pathObject (readonly)

Returns the value of attribute path.



3
4
5
# File 'lib/migration_bundler/migrations.rb', line 3

def path
  @path
end

Instance Method Details

#[](version) ⇒ Object



48
49
50
# File 'lib/migration_bundler/migrations.rb', line 48

def [](version)
  @paths_by_version[version]
end

#all(&block) ⇒ Object



38
39
40
41
42
# File 'lib/migration_bundler/migrations.rb', line 38

def all(&block)
  all_versions.inject({}) { |hash, v| hash[v] = self[v]; hash }.tap do |hash|
    hash.each(&block) if block_given?
  end
end

#all_versionsObject



16
17
18
# File 'lib/migration_bundler/migrations.rb', line 16

def all_versions
  @paths_by_version.keys
end

#applied_versionsObject



24
25
26
# File 'lib/migration_bundler/migrations.rb', line 24

def applied_versions
  database.migrations_table? ? database.all_versions : []
end

#current_versionObject



12
13
14
# File 'lib/migration_bundler/migrations.rb', line 12

def current_version
  database.migrations_table? ? database.current_version : nil
end

#latest_versionObject



20
21
22
# File 'lib/migration_bundler/migrations.rb', line 20

def latest_version
  all_versions.max
end

#pending(&block) ⇒ Object



32
33
34
35
36
# File 'lib/migration_bundler/migrations.rb', line 32

def pending(&block)
  pending_versions.inject({}) { |hash, v| hash[v] = self[v]; hash }.tap do |hash|
    hash.each(&block) if block_given?
  end
end

#pending_versionsObject



28
29
30
# File 'lib/migration_bundler/migrations.rb', line 28

def pending_versions
  (all_versions - applied_versions).sort
end

#up_to_date?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/migration_bundler/migrations.rb', line 44

def up_to_date?
  pending_versions.empty?
end