Excel仕様のCSVを読んで{カラム名=>値}のHashを作るコード

以下を参考に書いてみた。
codeなにがし::RubyでExcel仕様のCSVファイルの読み込みと表示

require 'csv'

source = <<EOS
field1, field2, field3
"aaa
bbb,""eeee""
ccc","bbb","ccc"
"ddd
eee
fff","eee","fff"
EOS

read_field = false
fields = []

CSV::Reader.parse(source) do |row|
  if fields.size == 0
    fields = row.map {|i| i.strip}
    next
  end

  h = Hash[fields.zip(row)]
  p h
end