Class: SeeingIsBelieving::EvaluateByMovingFiles

Inherits:
Object
  • Object
show all
Defined in:
lib/seeing_is_believing/evaluate_by_moving_files.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(program, filename, options = {}) ⇒ EvaluateByMovingFiles

Returns a new instance of EvaluateByMovingFiles.



25
26
27
28
29
30
31
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 25

def initialize(program, filename, options={})
  self.program         = program
  self.filename        = filename
  self.error_stream    = options.fetch :error_stream, $stderr # hmm, not really liking the global here
  self.input_stream    = options.fetch :input_stream, StringIO.new('')
  self.matrix_filename = options[:matrix_filename] || 'seeing_is_believing/the_matrix'
end

Instance Attribute Details

#error_streamObject

Returns the value of attribute error_stream.



23
24
25
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 23

def error_stream
  @error_stream
end

#filenameObject

Returns the value of attribute filename.



23
24
25
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 23

def filename
  @filename
end

#input_streamObject

Returns the value of attribute input_stream.



23
24
25
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 23

def input_stream
  @input_stream
end

#matrix_filenameObject

Returns the value of attribute matrix_filename.



23
24
25
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 23

def matrix_filename
  @matrix_filename
end

#programObject

Returns the value of attribute program.



23
24
25
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 23

def program
  @program
end

Instance Method Details

#callObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 33

def call
  @result ||= HardCoreEnsure.call \
    code: -> {
      dont_overwrite_existing_tempfile!
      move_file_to_tempfile
      write_program_to_file
      begin
        evaluate_file
        fail unless exitstatus.success?
        deserialize_result
      rescue Exception
        record_error
        raise $!
      end
    },
    ensure: -> {
      restore_backup
    }
end

#file_directoryObject



53
54
55
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 53

def file_directory
  File.dirname filename
end

#temp_filenameObject



57
58
59
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 57

def temp_filename
  File.join file_directory, "seeing_is_believing_backup.#{File.basename filename}"
end