File.write stores deterministic text that can be inspected afterward.

file write Writing a file replaces its content with the provided string.

Write File

word
write_file.rb
Replay: real traced execution (multi-file project)
require "tmpdir"

word = "ruby"

Dir.mktmpdir do |dir|
  path = File.join(dir, "output.txt")
  text = "#{word}\n#{word.upcase}\n"
  File.write(path, text)

  content = File.read(path)
  size = File.size(path)

  puts "file=#{File.basename(path)}"
  puts "size=#{size}"
  puts "content=#{content.lines.map(&:strip).join(",")}"
end
require "tmpdir"

word = "code"

Dir.mktmpdir do |dir|
  path = File.join(dir, "output.txt")
  text = "#{word}\n#{word.upcase}\n"
  File.write(path, text)

  content = File.read(path)
  size = File.size(path)

  puts "file=#{File.basename(path)}"
  puts "size=#{size}"
  puts "content=#{content.lines.map(&:strip).join(",")}"
end
require "tmpdir"

word = "trace"

Dir.mktmpdir do |dir|
  path = File.join(dir, "output.txt")
  text = "#{word}\n#{word.upcase}\n"
  File.write(path, text)

  content = File.read(path)
  size = File.size(path)

  puts "file=#{File.basename(path)}"
  puts "size=#{size}"
  puts "content=#{content.lines.map(&:strip).join(",")}"
end
  1. word ← ruby

    1require "tmpdir"23word→ ruby = "ruby"  #@word="code", "trace"45Dir.mktmpdir do |dir|6  path = File.join(dir, "output.txt")7  text = "#{word}\n#{word.upcase}\n"8  File.write(path, text)910  content = File.read(path)11  size = File.size(path)1213  puts "file=#{File.basename(path)}"14  puts "size=#{size}"15  puts "content=#{content.lines.map(&:strip).join(",")}"16end
  2. path ← /tmp/⟨tmp A⟩/output.txt, text ← ruby\nRUBY\n, content ← ruby\nRUBY\n

    5Dir.mktmpdir do |dir/tmp/⟨tmp A⟩|6  path→ /tmp/⟨tmp A⟩/output.txt = File.join(dir, "output.txt")/tmp/⟨tmp A⟩/output.txt7  text→ ruby\nRUBY\n = "#{wordruby}\n#{word.upcaseRUBY}\n"8  File.write(path/tmp/⟨tmp A⟩/output.txt, textruby\nRUBY\n)910  content→ ruby\nRUBY\n = File.read(path)ruby\nRUBY\n11  size→ 10 = File.size(path)101213  puts "file=#{File.basename(path)output.txt}"14  puts "size=#{size10}"15  puts "content=#{content.lines.map(&:strip).join(",")ruby,RUBY}"16end
    outputfile=output.txt
    size=10
    content=ruby,RUBY
  1. word ← code

    1require "tmpdir"23word→ code = "code"45Dir.mktmpdir do |dir|6  path = File.join(dir, "output.txt")7  text = "#{word}\n#{word.upcase}\n"8  File.write(path, text)910  content = File.read(path)11  size = File.size(path)1213  puts "file=#{File.basename(path)}"14  puts "size=#{size}"15  puts "content=#{content.lines.map(&:strip).join(",")}"16end
  2. path ← /tmp/⟨tmp A⟩/output.txt, text ← code\nCODE\n, content ← code\nCODE\n

    5Dir.mktmpdir do |dir/tmp/⟨tmp A⟩|6  path→ /tmp/⟨tmp A⟩/output.txt = File.join(dir, "output.txt")/tmp/⟨tmp A⟩/output.txt7  text→ code\nCODE\n = "#{wordcode}\n#{word.upcaseCODE}\n"8  File.write(path/tmp/⟨tmp A⟩/output.txt, textcode\nCODE\n)910  content→ code\nCODE\n = File.read(path)code\nCODE\n11  size→ 10 = File.size(path)101213  puts "file=#{File.basename(path)output.txt}"14  puts "size=#{size10}"15  puts "content=#{content.lines.map(&:strip).join(",")code,CODE}"16end
    outputfile=output.txt
    size=10
    content=code,CODE
  1. word ← trace

    1require "tmpdir"23word→ trace = "trace"45Dir.mktmpdir do |dir|6  path = File.join(dir, "output.txt")7  text = "#{word}\n#{word.upcase}\n"8  File.write(path, text)910  content = File.read(path)11  size = File.size(path)1213  puts "file=#{File.basename(path)}"14  puts "size=#{size}"15  puts "content=#{content.lines.map(&:strip).join(",")}"16end
  2. path ← /tmp/⟨tmp A⟩/output.txt, text ← trace\nTRACE\n, content ← trace\nTRACE\n

    5Dir.mktmpdir do |dir/tmp/⟨tmp A⟩|6  path→ /tmp/⟨tmp A⟩/output.txt = File.join(dir, "output.txt")/tmp/⟨tmp A⟩/output.txt7  text→ trace\nTRACE\n = "#{wordtrace}\n#{word.upcaseTRACE}\n"8  File.write(path/tmp/⟨tmp A⟩/output.txt, texttrace\nTRACE\n)910  content→ trace\nTRACE\n = File.read(path)trace\nTRACE\n11  size→ 12 = File.size(path)121213  puts "file=#{File.basename(path)output.txt}"14  puts "size=#{size12}"15  puts "content=#{content.lines.map(&:strip).join(",")trace,TRACE}"16end
    outputfile=output.txt
    size=12
    content=trace,TRACE