# \[Bug:trunk\] some behavior changes of lib/csv.rb between 1.8 and 1.9

**URL:** <https://www.ruby-forum.com/t/bug-trunk-some-behavior-changes-of-lib-csv-rb-between-1-8-and-1-9/182476>\
**Category:** Development\
**Created:** [January 28, 2010, 6:36pm UTC](https://www.ruby-forum.com/t/bug-trunk-some-behavior-changes-of-lib-csv-rb-between-1-8-and-1-9/182476 "2010-01-28T18:36:58Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [January 28, 2010, 6:36pm UTC](https://www.ruby-forum.com/t/bug-trunk-some-behavior-changes-of-lib-csv-rb-between-1-8-and-1-9/182476/1 "2010-01-28T18:36:58Z")

</div>

Hi jeg2, or anyone who knows the implementation of FasterCSV,

I’m now checking for ruby trunk to pass rubyspec. Are these behavior  
changes of lib/csv.rb intended or bug?

1. CSV.generate

$ ruby18 -rcsv -e ‘w = CSV.generate(“foo18.csv”); w \<\< [1, 2, 3];  
w.close’  
$ cat foo18.csv  
1,2,3

$ ruby19 -rcsv -e ‘w = CSV.generate(“foo19.csv”); w \<\< [1, 2, 3];  
w.close’  
/home/mame/work/ruby19/local/lib/ruby/1.9.1/csv.rb:1231:in  
`generate': no block given (yield) (LocalJumpError) from -e:1:in`’

There is the comment of csv.rb:

> The old CSV’s Reader and Writer classes have been dropped.  
> CSV::generate() is different from the old method.  
> They mean this change, don’t they?

1. CSV.generate\_line

$ ruby18 -rcsv -e ‘p CSV.generate\_line([])’  
“”

$ ruby19 -rcsv -e ‘p CSV.generate\_line([])’  
“\n”

1. CSV.generate\_line (2)

$ ruby18 -rcsv -e ‘p CSV::generate\_line([“foo”, “bar”], ?;)’  
“foo;bar”

$ ruby19 -rcsv -e ‘p CSV::generate\_line([“foo”, “bar”], ?;)’  
/home/mame/work/ruby19/local/lib/ruby/1.9.1/csv.rb:1249:in `merge': can't convert String into Hash (TypeError) from /home/mame/work/ruby19/local/lib/ruby/1.9.1/csv.rb:1249:in`generate\_line’  
from -e:1:in `’

1. CSV.parse

$ ruby18 -rcsv -ve ‘p CSV.parse “\nfoo”’  
[[nil], [“foo”]]

$ ruby19 -rcsv -ve ‘p CSV.parse “\nfoo”’  
[[], [“foo”]]

1. CSV.parse\_line

$ ruby18 -rcsv -ve ‘p CSV.parse\_line “”’  
[nil]

$ ruby19 -rcsv -ve ‘p CSV.parse\_line “”’  
nil

1. CSV.parse\_line (2)

$ ruby18 -rcsv -ve ‘p CSV.parse\_line “\nfoo”’  
[nil]

$ ruby19 -rcsv -ve ‘p CSV.parse\_line “\nfoo”’  
[]

Thanks,
