Sha256: 181c7eb8f4956b84626217c16a3416d8a45baa0a1b77fd155ebd15745bef65f4

Contents?: true

Size: 806 Bytes

Versions: 7

Compression:

Stored size: 806 Bytes

Contents

require 'json'
require_relative "ruby_selector"
require_relative "gemfile_selector"

module SchemaDev
  class Executor

    attr_reader :ruby, :rails, :db, :error

    def initialize(ruby:, rails:, db: nil)
      @ruby_selector = RubySelector.command(ruby)
      @gemfile_selector = GemfileSelector.command(rails: rails, db: db)
    end

    def run(cmd, dry_run: false)
      fullcommand = ["/usr/bin/env", @gemfile_selector, @ruby_selector, cmd].compact.join(' ')
      puts "* #{fullcommand}"
      return true if dry_run

      Tempfile.open('SchemaDev') do |file|
        @error = !system(%Q[ (#{fullcommand}) 2>& 1 | tee #{file.path} ])
        file.rewind
        @error ||= file.readlines.grep(/(^Failed examples)|(rake aborted)|(LoadError)/).any?
      end

      return !@error
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
schema_dev-0.1.6 lib/schema_dev/executor.rb
schema_dev-0.1.5 lib/schema_dev/executor.rb
schema_dev-0.1.4 lib/schema_dev/executor.rb
schema_dev-0.1.3 lib/schema_dev/executor.rb
schema_dev-0.1.2 lib/schema_dev/executor.rb
schema_dev-0.1.1 lib/schema_dev/executor.rb
schema_dev-0.1.0 lib/schema_dev/executor.rb