Issue #9582 has been updated by James Gray.

Status changed from Open to Rejected

Yeah, I also looked at making this change, but the behavior of returning just the first line is documented:

https://github.com/ruby/ruby/blob/trunk/lib/csv.rb#L672

I'm not sure if users of this library count on that or not.  This change would alter the behavior of tables, so at the very least I think it would need to happen on a major version release.

Tables are also editable, so deleting rows affects the results of what thismethod returns.

Anyway, if you need the non-first row headers, you can always do:

header_row = table.find { |row| !row.headers.empty? }
headers    = header_row && header_row.headers

----------------------------------------
Bug #9582: CSV#headers not giving expected results.
https://bugs.ruby-lang.org/issues/9582#change-45657

* Author: arup rakshit
* Status: Rejected
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: -
* Backport: 
----------------------------------------
It seems something not working as expected in CSV. I tried to find the reason here , http://rxr.whitequark.org/mri/source/lib/csv.rb but I failed.

    require 'csv'
    
    content = <<_
    key,fr
    edit,diter
    close,Fermer
    _
    
    File.write('test',content)
    
    file = CSV.read('test', :headers => true)
    file.headers # => ["key", "fr"]
    file.to_a # => [["key", "fr"], ["edit", "diter"], ["close", "Fermer"]]
    
    content = <<_
    key,fr
    
    edit,diter
    close,Fermer
    _
    
    File.write('test1',content)
    
    file = CSV.read('test1', :headers => true)
    file.headers # => []  # <~~~~~~~~~~~ Is this a bug ?
    file.to_a # => [[], [], ["edit", "diter"], ["close", "Fermer"]]

---Files--------------------------------
9582.patch (870 Bytes)


-- 
http://bugs.ruby-lang.org/