class SchemaDev::Executor

Attributes

activerecord[R]
db[R]
error[R]
ruby[R]

Public Class Methods

new(ruby:, activerecord:, db:) click to toggle source
# File lib/schema_dev/executor.rb, line 13
def initialize(ruby:, activerecord:, db:)
  @ruby_selector = RubySelector.command(ruby)
  @gemfile_selector = GemfileSelector.command(activerecord: activerecord, db: db)
end

Public Instance Methods

run(cmd, dry_run: false) click to toggle source
# File lib/schema_dev/executor.rb, line 18
def run(cmd, dry_run: false)
  fullcommand = ['/usr/bin/env', @gemfile_selector, @ruby_selector, cmd].compact.join(' ')
  puts "* #{fullcommand}"
  return true if dry_run

  @error = false
  Open3.popen2e(fullcommand) do |_i, oe, t|
    oe.each do |line|
      puts line
      @error ||= (line =~ /(^Failed examples)|(rake aborted)|(LoadError)/)
    end
    @error ||= !t.value.success?
  end

  !@error
end