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.ymlfile.
Instance Method Summary collapse
-
#each(&block) ⇒ Object
Runs the given
blockfor 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.
91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/gemika/matrix.rb', line 91 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.
143 144 145 |
# File 'lib/gemika/matrix.rb', line 143 def current_ruby @current_ruby end |
#rows ⇒ Object (readonly)
Returns the value of attribute rows.
143 144 145 |
# File 'lib/gemika/matrix.rb', line 143 def rows @rows end |
Class Method Details
.from_travis_yml(options = {}) ⇒ Object
Builds a Gemika::Matrix from the given .travis.yml file.
138 139 140 141 |
# File 'lib/gemika/matrix.rb', line 138 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).
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/gemika/matrix.rb', line 111 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 |