This is the best I've come up with so far.  It should handle any CSV
record
(i.e., fields may contain commas, double quotes, and newlines).

class String
  def csv
    if include? '"'
      ary =
        "#{chomp},".scan( /\G"([^"]*(?:""[^"]*)*)",|\G([^,"]*),/ )
      raise "Bad csv record:\n#{self}"  if $' != ""
      ary.map{|a| a[1] || a[0].gsub(/""/,'"') }
    else
      ary = chomp.split( /,/, -1)
      ##   "".csv ought to be [""], not [], just as
      ##   ",".csv is ["",""].
      if [] == ary
        [""]
      else
        ary
      end
    end
  end
end