---
title: "CSV::Row#each etc. return enumerator when no block given"
description:
  "CSV::Row#each, CSV::Row#delete_if, CSV::Table#each and CSV::Table#delete_if
  return enumerator when no block given"
canonical_url: "https://www.bigbinary.com/blog/csv-row-each-and-delete-if-return-enumerator-when-no-block-given"
markdown_url: "https://www.bigbinary.com/blog/csv-row-each-and-delete-if-return-enumerator-when-no-block-given.md"
---

# CSV::Row#each etc. return enumerator when no block given

CSV::Row#each, CSV::Row#delete_if, CSV::Table#each and CSV::Table#delete_if
return enumerator when no block given

- Author: Sushant Mittal
- Published: September 25, 2017
- Categories: Ruby 2.4, Ruby

In Ruby 2.3, These methods do not return enumerator when no block is given.

### Ruby 2.3

```ruby

CSV::Row.new(%w(banana mango), [1,2]).each #=> #<CSV::Row "banana":1 "mango":2>

CSV::Row.new(%w(banana mango), [1,2]).delete_if #=> #<CSV::Row "banana":1 "mango":2>

```

Some methods raise exception because of this behavior.

```ruby

> ruby -rcsv -e 'CSV::Table.new([CSV::Row.new(%w{banana mango}, [1, 2])]).by_col.each'
 #=> /Users/sushant/.rbenv/versions/2.3.0/lib/ruby/2.3.0/csv.rb:850:in `block in each': undefined method `[]' for nil:NilClass (NoMethodError)
  from /Users/sushant/.rbenv/versions/2.3.0/lib/ruby/2.3.0/csv.rb:850:in `each'
  from /Users/sushant/.rbenv/versions/2.3.0/lib/ruby/2.3.0/csv.rb:850:in `each'
  from -e:1:in `<main>'

```

Ruby 2.4
[fixed this issue](https://github.com/ruby/ruby/commit/b425d4f19ad9efaefcb1a767a6ea26e6d40e3985).

### Ruby 2.4

```ruby

CSV::Row.new(%w(banana mango), [1,2]).each #=> #<Enumerator: #<CSV::Row "banana":1 "mango":2>:each>

CSV::Row.new(%w(banana mango), [1,2]).delete_if #=> #<Enumerator: #<CSV::Row "banana":1 "mango":2>:delete_if>

```

As we can see, these methods now return an enumerator when no block is given.

In Ruby 2.4 following code will not raise any exception.

```ruby

> ruby -rcsv -e 'CSV::Table.new([CSV::Row.new(%w{banana mango}, [1, 2])]).by_col.each'

```

## Links

- [Human page](https://www.bigbinary.com/blog/csv-row-each-and-delete-if-return-enumerator-when-no-block-given)
