# Ruby filter raises error on event.delete

**URL:** <https://discuss.elastic.co/t/ruby-filter-raises-error-on-event-delete/36471>\
**Category:** Logstash\
**Created:** [December 6, 2015, 3:08pm UTC](https://discuss.elastic.co/t/ruby-filter-raises-error-on-event-delete/36471 "2015-12-06T15:08:33Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![stefws](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stefws/32/6442_2.png) [@stefws](https://discuss.elastic.co/u/stefws)\
**Post date:** [December 6, 2015, 3:08pm UTC](https://discuss.elastic.co/t/ruby-filter-raises-error-on-event-delete/36471/1 "2015-12-06T15:08:33Z")

</div>

Got a ruby filter:

> ruby { code =\> "  
> event.delete('message') if event['message'].empty?
> 
> $DROP\_STATS = %w[unwantedstat1 unwantedstat2 unwantedstat3]  
> event.cancel if event['stat'] and $DROP\_STATS.include?(event['stat'])  
> " }

only ruby complains like this:

> Ruby exception occurred: undefined method `delete' for #LogStash::Event:0x4cf922cb {:level=\>:error}

how can I remove a field from an event within ruby?

---

<div class="post-metadata">

**Author:** ![vtst2412](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vtst2412/32/6228_2.png) [@vtst2412](https://discuss.elastic.co/u/vtst2412)\
**Post date:** [December 6, 2015, 7:53pm UTC](https://discuss.elastic.co/t/ruby-filter-raises-error-on-event-delete/36471/2 "2015-12-06T19:53:31Z")

</div>

Try:

```
event.remove(field)
```

---

<div class="post-metadata">

**Author:** ![stefws](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stefws/32/6442_2.png) [@stefws](https://discuss.elastic.co/u/stefws)\
**Post date:** [December 6, 2015, 8:11pm UTC](https://discuss.elastic.co/t/ruby-filter-raises-error-on-event-delete/36471/3 "2015-12-06T20:11:56Z")

</div>

[ruby doc](http://ruby-doc.org/core-1.9/Hash.html#method-i-delete) doesn't list remove as an operation of a hash, but delete(field), so...

---

<div class="post-metadata">

**Author:** ![vtst2412](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vtst2412/32/6228_2.png) [@vtst2412](https://discuss.elastic.co/u/vtst2412)\
**Post date:** [December 6, 2015, 8:14pm UTC](https://discuss.elastic.co/t/ruby-filter-raises-error-on-event-delete/36471/4 "2015-12-06T20:14:30Z")

</div>

> [@stefws](#):
>
> ruby doc doesn't list remove as an operation of a hash, but delete(field), so...

The event object is Class: LogStash::Event, not technically a hash. Did you even try before commenting 😄

[http://www.rubydoc.info/gems/logstash-event/1.1.5/LogStash/Event#remove-instance\_method](http://www.rubydoc.info/gems/logstash-event/1.1.5/LogStash/Event#remove-instance_method)

---

<div class="post-metadata">

**Author:** ![stefws](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stefws/32/6442_2.png) [@stefws](https://discuss.elastic.co/u/stefws)\
**Post date:** [December 6, 2015, 8:45pm UTC](https://discuss.elastic.co/t/ruby-filter-raises-error-on-event-delete/36471/5 "2015-12-06T20:45:51Z")

</div>

Okay not as you write it's a class variable (will read the doc...) thanks!  
I'm at it 😉

---

<div class="post-metadata">

**Author:** ![stefws](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stefws/32/6442_2.png) [@stefws](https://discuss.elastic.co/u/stefws)\
**Post date:** [December 6, 2015, 8:52pm UTC](https://discuss.elastic.co/t/ruby-filter-raises-error-on-event-delete/36471/6 "2015-12-06T20:52:37Z")

</div>

event.remove works 👍

---

<div class="post-metadata">

**Author:** ![stefws](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stefws/32/6442_2.png) [@stefws](https://discuss.elastic.co/u/stefws)\
**Post date:** [December 8, 2015, 8:38am UTC](https://discuss.elastic.co/t/ruby-filter-raises-error-on-event-delete/36471/7 "2015-12-08T08:38:00Z")

</div>

That is it doesn't rise an exception/error anymore, but it seems it doesn't get called either due to my if expression as changing it to this shows expression never evaluates to true, any hints why not?

> ```
> $DROP_STATS = %w[unwantedstat1 unwantedstat2 unwantedstat3]
> if $DROP_STATS.include?(event['stat'])
> event['dropped_stat'] = 'found'
> event.cancel
> end
> 
> ```

---

<div class="post-metadata">

**Author:** ![stefws](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stefws/32/6442_2.png) [@stefws](https://discuss.elastic.co/u/stefws)\
**Post date:** [December 8, 2015, 12:43pm UTC](https://discuss.elastic.co/t/ruby-filter-raises-error-on-event-delete/36471/8 "2015-12-08T12:43:55Z")

</div>

Forget my mistake (naturally 😉 code snippet IS working as expected, just didn't had it in the right execution path to get it triggered.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 5:19am UTC](https://discuss.elastic.co/t/ruby-filter-raises-error-on-event-delete/36471/9 "2017-07-06T05:19:32Z")

</div>


