Issue #9988 has been reported by Jeremy Evans.

----------------------------------------
Bug #9988: CSV does not write headers when :write_headers is true and no rows are added
https://bugs.ruby-lang.org/issues/9988

* Author: Jeremy Evans
* Status: Open
* Priority: Normal
* Assignee: James Gray
* Category: lib
* Target version: 
* ruby -v: ruby -v: ruby 2.1.2p95 (2014-05-08 revision 45877) [i386-openbsd]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
When the CSV :write_headers option is used, headers are only added if at least one row is added:

~~~
$ ruby -r csv -e "p CSV.generate(:headers=>%w'a b c', :write_headers=>true){|csv|}"
""
$ ruby -r csv -e "p CSV.generate(:headers=>%w'a b c', :write_headers=>true){|csv| csv << []}"
"a,b,c\n\n"
~~~

This seems like a bug to me.  It should write the headers even if there are no rows.  The attached patch does that:

~~~
$ ruby -I lib -r csv -e "p CSV.generate(:headers=>%w'a b c', :write_headers=>true){|csv|}"
"a,b,c\n"
~~~

The attached patch should probably be refactored to avoid the duplication, but I think that is best left to the csv maintainer.


---Files--------------------------------
csv-write-headers-empty-fix.diff (1.47 KB)


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