Files and Directories
Write File
File.write stores deterministic text that can be inspected afterward.
file write
Writing a file replaces its content with the provided string.
Write File
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
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(",")}"16endpath ← /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}"16endoutputfile=output.txt size=10 content=ruby,RUBY
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(",")}"16endpath ← /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}"16endoutputfile=output.txt size=10 content=code,CODE
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(",")}"16endpath ← /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}"16endoutputfile=output.txt size=12 content=trace,TRACE