Issue #9582 has been updated by Thiago Lewin.

File 9582.patch added

The CSV::Table#headers method just look at the first row of the table, if you enable the option ":return_headers" then should work.
In order to keep the API consistency, I attached a patch that iterates through the table until find a row with header information.


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

* Author: arup rakshit
* Status: Open
* 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/