Class: SchemaDev::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/schema_dev/config.rb

Defined Under Namespace

Classes: Tuple

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ruby:, rails:, db: nil, exclude: nil, notify: nil, quick: nil) ⇒ Config

Returns a new instance of Config.



37
38
39
40
41
42
43
44
# File 'lib/schema_dev/config.rb', line 37

def initialize(ruby:, rails:, db: nil, exclude: nil, notify: nil, quick: nil)
  @ruby = Array.wrap(ruby)
  @rails = Array.wrap(rails)
  @db = Array.wrap(db)
  @exclude = Array.wrap(exclude).map(&:symbolize_keys).map {|tuple| Tuple.new(tuple)}
  @notify = Array.wrap(notify)
  @quick = Array.wrap(quick || {ruby: @ruby.last, rails: @rails.last, db: @db.andand.last})
end

Instance Attribute Details

#quickObject

Returns the value of attribute quick.



14
15
16
# File 'lib/schema_dev/config.rb', line 14

def quick
  @quick
end

Class Method Details

.loadObject



16
17
18
# File 'lib/schema_dev/config.rb', line 16

def self.load
  new (YAML.load Pathname.new(CONFIG_FILE).read).deep_symbolize_keys
end

Instance Method Details

#db?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/schema_dev/config.rb', line 46

def db?
  @db.any?
end

#matrix(quick: false, ruby: nil, rails: nil, db: nil) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/schema_dev/config.rb', line 50

def matrix(quick: false, ruby: nil, rails: nil, db: nil)
  use_ruby = @ruby
  use_rails = @rails
  use_db = @db
  if quick
    use_ruby = @quick.map{|q| q[:ruby]}
    use_rails = @quick.map{|q| q[:rails]}
    use_db = @quick.map{|q| q[:db]}
  end
  use_ruby = Array.wrap(ruby) if ruby
  use_rails = Array.wrap(rails) if rails
  use_db = Array.wrap(db) if db

  @matrix ||= begin
                m = use_ruby.product(use_rails)
                m = m.product(use_db).map(&:flatten) if db?
                m = m.map { |_ruby, _rails, _db| Tuple.new(ruby: _ruby, rails: _rails, db: _db) }
                m.reject(&it.match_any?(@exclude)).map(&:to_hash)
              end
end