Class: Gemika::Matrix
- Inherits:
-
Object
- Object
- Gemika::Matrix
- Defined in:
- lib/gemika/matrix.rb
Defined Under Namespace
Classes: Row
Constant Summary collapse
- COLOR_HEAD =
"\e[44;97m"
- COLOR_WARNING =
"\e[33m"
- COLOR_SUCCESS =
"\e[32m"
- COLOR_FAILURE =
"\e[31m"
- COLOR_RESET =
"\e[0m"
Instance Attribute Summary collapse
-
#current_ruby ⇒ Object
readonly
Returns the value of attribute current_ruby.
-
#rows ⇒ Object
readonly
Returns the value of attribute rows.
Class Method Summary collapse
-
.from_travis_yml(options = {}) ⇒ Object
Builds a Matrix from the given
.travis.yml
file.
Instance Method Summary collapse
-
#each(&block) ⇒ Object
Runs the given
block
for each matrix row that is compatible with the current Ruby. -
#initialize(options) ⇒ Matrix
constructor
A new instance of Matrix.
Constructor Details
#initialize(options) ⇒ Matrix
Returns a new instance of Matrix.
87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/gemika/matrix.rb', line 87 def initialize() @rows = .fetch(:rows) @silent = .fetch(:silent, false) @io = .fetch(:io, STDOUT) @color = .fetch(:color, true) validate = .fetch(:validate, true) @rows.each(&:validate!) if validate @results = Env.new_ordered_hash @compatible_count = 0 @all_passed = nil @current_ruby = .fetch(:current_ruby, RUBY_VERSION) end |
Instance Attribute Details
#current_ruby ⇒ Object (readonly)
Returns the value of attribute current_ruby.
139 140 141 |
# File 'lib/gemika/matrix.rb', line 139 def current_ruby @current_ruby end |
#rows ⇒ Object (readonly)
Returns the value of attribute rows.
139 140 141 |
# File 'lib/gemika/matrix.rb', line 139 def rows @rows end |
Class Method Details
.from_travis_yml(options = {}) ⇒ Object
Builds a Gemika::Matrix from the given .travis.yml
file.
134 135 136 137 |
# File 'lib/gemika/matrix.rb', line 134 def self.from_travis_yml( = {}) rows = TravisConfig.load_rows() new(.merge(:rows => rows)) end |
Instance Method Details
#each(&block) ⇒ Object
Runs the given block
for each matrix row that is compatible with the current Ruby.
The row's gemfile will be set as an environment variable, so Bundler will use that gemfile if you shell out in block
.
At the end it will print a summary of which rows have passed, failed or were skipped (due to incompatible Ruby version).
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/gemika/matrix.rb', line 107 def each(&block) @all_passed = true rows.each do |row| gemfile = row.gemfile if row.compatible_with_ruby?(current_ruby) @compatible_count += 1 print_title gemfile gemfile_passed = Env.with_gemfile(gemfile, row, &block) @all_passed &= gemfile_passed if gemfile_passed @results[row] = tint('Success', COLOR_SUCCESS) else @results[row] = tint('Failed', COLOR_FAILURE) end else @results[row] = tint("Skipped", COLOR_WARNING) end end print_summary end |