File opened with 'r' (read) mode but code tries to write with puts, which is not allowed.
Step 2: Confirm other options
File is closed properly; block is optional; filename looks valid.
Final Answer:
File opened in read mode but trying to write -> Option A
Quick Check:
Read mode + write operation = error [OK]
Hint: Don't write to file opened in read mode [OK]
Common Mistakes:
Ignoring file mode mismatch
Thinking block is always required
Assuming file not closed
5. You want to read a file and count how many lines contain the word 'error'. Which Ruby code correctly does this using file handling?
hard
A. count = 0
file = File.open('log.txt', 'w')
file.each_line do |line|
count += 1 if line.include?('error')
end
file.close
puts count
B. count = 0
File.open('log.txt', 'r') do |file|
file.each_line do |line|
count += 1 if line.include?('error')
end
end
puts count
C. count = 0
File.read('log.txt').each do |line|
count += 1 if line.include?('error')
end
puts count
D. count = 0
File.open('log.txt') do |file|
file.read.each do |line|
count += 1 if line.include?('error')
end
end
puts count
Solution
Step 1: Identify correct file mode and iteration
count = 0
File.open('log.txt', 'r') do |file|
file.each_line do |line|
count += 1 if line.include?('error')
end
end
puts count opens file in 'r' mode and uses each_line with block, counting lines with 'error'.
Step 2: Check other options for errors
count = 0
file = File.open('log.txt', 'w')
file.each_line do |line|
count += 1 if line.include?('error')
end
file.close
puts count opens file in 'w' (write) mode, wrong for reading; count = 0
File.read('log.txt').each do |line|
count += 1 if line.include?('error')
end
puts count uses File.read but does not handle string properly; count = 0
File.open('log.txt') do |file|
file.read.each do |line|
count += 1 if line.include?('error')
end
end
puts count misses mode argument in File.open.
Final Answer:
count = 0
File.open('log.txt', 'r') do |file|
file.each_line do |line|
count += 1 if line.include?('error')
end
end
puts count -> Option B
Quick Check:
Open file read + each_line + count lines with 'error' [OK]
Hint: Open file in 'r' mode and use each_line to count matches [OK]
Common Mistakes:
Opening file in write mode when reading
Not specifying mode in File.open
Using File.read without splitting lines
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.