Bug #15770
Updated by skyksandr (Aleksandr Kunin) about 5 years ago
It works on 2.5.\*, but doesn't work on 2.6.\* ``` require 'csv' require 'date' counter = 0 CSV.foreach('./05-31-20.CSV', skip_lines: /^[^0-9]{4}/) do |row| time = row[0] p time if time.length < 23 counter += 1 end p "Processed: #{counter} lines" ``` And the result is: ``` "03-09T09:40:04.00Z" "Processed: 4424 lines" ``` So there are two problems: 1. Line 4424 got corrupted by slicing 5 symbols ("2019-") 2. Not whole file is parsed, total number of lines: **4497** EDIT: With regex `/^(?![0-9]{4})/` in addition to corrupt first field parser hangs in infinite loop. Stack (to give you an idea where to look to): Stack: ``` 7: from ~/.rbenv/versions/2.6.2/lib/ruby/2.6.0/csv.rb:509:in `foreach' 6: from ~/.rbenv/versions/2.6.2/lib/ruby/2.6.0/csv.rb:657:in `open' 5: from ~/.rbenv/versions/2.6.2/lib/ruby/2.6.0/csv.rb:510:in `block in foreach' 4: from ~/.rbenv/versions/2.6.2/lib/ruby/2.6.0/csv.rb:1176:in `each' 3: from ~/.rbenv/versions/2.6.2/lib/ruby/2.6.0/csv/parser.rb:265:in `parse' 2: from ~/.rbenv/versions/2.6.2/lib/ruby/2.6.0/csv/parser.rb:583:in `skip_needless_lines' 1: from ~/.rbenv/versions/2.6.2/lib/ruby/2.6.0/csv/parser.rb:704:in `parse_row_end' ```