Class: KPM::Migrations

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

Constant Summary collapse

KILLBILL_MIGRATION_PATH =
/src\/main\/resources\/org\/killbill\/billing\/[a-z]+\/migration\/(V[0-9a-zA-Z_]+.sql)/
JAVA_PLUGIN_MIGRATION_PATH =
/src\/main\/resources\/migration\/(V[0-9a-zA-Z_]+.sql)/
RUBY_PLUGIN_MIGRATION_PATH =
/db\/migrate\/([0-9a-zA-Z_]+.rb)/

Instance Method Summary collapse

Constructor Details

#initialize(from_version, to_version = nil, repository = 'killbill/killbill', oauth_token = nil, logger = Logger.new(STDOUT)) ⇒ Migrations

Go to github.com/settings/tokens to generate a token



15
16
17
18
19
20
21
# File 'lib/kpm/migrations.rb', line 15

def initialize(from_version, to_version = nil, repository = 'killbill/killbill', oauth_token = nil, logger = Logger.new(STDOUT))
  @from_version = from_version
  @to_version = to_version
  @repository = repository
  @oauth_token = oauth_token
  @logger = logger
end

Instance Method Details

#migrationsObject



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/kpm/migrations.rb', line 23

def migrations
  @migrations ||= begin
    if @to_version.nil?
      for_version(@from_version)
    else
      migrations_to_skip = Set.new
      for_version(@from_version, true).each { |migration| migrations_to_skip << migration[:name] }

      for_version(@to_version, false, migrations_to_skip)
    end
  end
end

#save(dir = nil) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/kpm/migrations.rb', line 36

def save(dir = nil)
  return nil if migrations.size == 0

  dir ||= Dir.mktmpdir
  @logger.debug("Storing migrations to #{dir}")
  migrations.each do |migration|
    migration_path = Pathname.new(dir).join(migration[:name])
    File.open(migration_path, 'w') do |file|
      @logger.debug("Storing migration #{migration_path}")
      file.write(migration[:sql])
    end
  end
  dir
end