Project

General

Profile

Actions

Bug #14360

closed

Regression CSV#open method for writing from Ruby 2.4.3 to 2.5.0

Added by arturoherrero (Arturo Herrero) about 6 years ago. Updated about 6 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]
[ruby-core:84873]

Description

I have noticed a different behaviour between Ruby <= 2.4.3 and Ruby 2.5.0 for the #open method.

This issue is also open in its repository because it's not clear to me where is the appropriate place to open the issue, https://github.com/ruby/csv/issues/17

If you create an empty file for writing and you are not writing any line in that CSV file, Ruby <= 2.4.3 doesn't write anything (an empty file) but Ruby 2.5.0 writes the headers.

Ruby <= 2.4.3

$ ruby -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-darwin17]
$ irb
irb(main):001:0> require "csv"
=> true
irb(main):002:0> CSV.open("ruby-2.4.3.csv", "wb", headers: ["name", "surname"], write_headers: true) { }
=> nil
irb(main):003:0> `cat ruby-2.4.3.csv`
=> ""

Ruby 2.5.0

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]
$ irb
irb(main):001:0> require "csv"
=> true
irb(main):002:0> CSV.open("ruby-2.5.0.csv", "wb", headers: ["name", "surname"], write_headers: true) { }
=> nil
irb(main):003:0> `cat ruby-2.5.0.csv`
=> "name,surname\n"

In the examples, I'm using an empty block but in a real application probably you will have an if statement, something like this:

CSV.open(...) do |csv|
  csv << "hello" if condition
end
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0