CSV.generate builds comma-separated text from Ruby arrays.

CSV Writing

csv_writing.rb
require "csv"

quantity = 
item = "notebook"
rows = [
  ["item", "quantity"],
  [item, quantity]
]

csv_text = CSV.generate do |csv|
  rows.each { |row| csv << row }
end

line_count = csv_text.lines.count
last_line = csv_text.lines.last.strip

puts "item=#{item}"
puts "quantity=#{quantity}"
puts "lines=#{line_count}"
puts "csv=#{last_line}"
require "csv"

quantity = 
item = "notebook"
rows = [
  ["item", "quantity"],
  [item, quantity]
]

csv_text = CSV.generate do |csv|
  rows.each { |row| csv << row }
end

line_count = csv_text.lines.count
last_line = csv_text.lines.last.strip

puts "item=#{item}"
puts "quantity=#{quantity}"
puts "lines=#{line_count}"
puts "csv=#{last_line}"
require "csv"

quantity = 
item = "notebook"
rows = [
  ["item", "quantity"],
  [item, quantity]
]

csv_text = CSV.generate do |csv|
  rows.each { |row| csv << row }
end

line_count = csv_text.lines.count
last_line = csv_text.lines.last.strip

puts "item=#{item}"
puts "quantity=#{quantity}"
puts "lines=#{line_count}"
puts "csv=#{last_line}"
csv generate Writing CSV starts with rows of values, then Ruby turns those rows into text.