Class: Caboose::Version

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/caboose/migration_version.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(str, migration_range) ⇒ Version

Returns a new instance of Version.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/caboose/migration_version.rb', line 7

def initialize(str, migration_range)
  @str = str
  @migrations = []

  if !migration_range.nil?

    directory = File.join(File.expand_path('../../..', __FILE__), 'db/migrate')
    files = Dir.entries(directory).select{ |f| !File.directory?(f) && /[0-9]{3}_[^\n\r\.]+\.rb$/ =~ f && migration_range.include?(f[0..2].to_i) }
    files.sort.each do |f|
      require File.join(directory, f)
      /[0-9]{3}_(?<clazz_name>[^\n\r\.]+)\.rb$/ =~ f
      @migrations += [clazz_name.classify.constantize.new]
    end
  end

end

Instance Attribute Details

#migrationsObject

Returns the value of attribute migrations.



5
6
7
# File 'lib/caboose/migration_version.rb', line 5

def migrations
  @migrations
end

#strObject

Returns the value of attribute str.



5
6
7
# File 'lib/caboose/migration_version.rb', line 5

def str
  @str
end

Class Method Details

.compare_version_strings(a, b) ⇒ Object



28
29
30
31
32
# File 'lib/caboose/migration_version.rb', line 28

def self.compare_version_strings(a, b)
  a = a.split('.').map{|s| s.to_i}
  b = b.split('.').map{|s| s.to_i}
  return a <=> b
end

Instance Method Details

#<=>(other) ⇒ Object



34
35
36
# File 'lib/caboose/migration_version.rb', line 34

def <=>(other)
  return Version.compare_version_strings(@str, other.to_s)
end

#down(c) ⇒ Object



42
43
44
# File 'lib/caboose/migration_version.rb', line 42

def down(c)
  @migrations.reverse_each{|m| m.down(c)}
end

#to_sObject



24
25
26
# File 'lib/caboose/migration_version.rb', line 24

def to_s
  return @str
end

#up(c) ⇒ Object



38
39
40
# File 'lib/caboose/migration_version.rb', line 38

def up(c)
  @migrations.each{|m| m.up(c)}
end