Logstash and Elasticsearch accept integer values for keyword type fields, such as tags.
LogStashLogger filters tags, not to pass nils or empty strings as tags to Logstash.
However, the empty string check does fail on everything that is not a string, and it does so in not a
very friendly manner:
irb(main):005:0> stdout_logger.tagged('test', 10) {}
Traceback (most recent call last):
5: from /Users/irvingwashington/.rubies/ruby-2.5.3/bin/irb:11:in `<main>'
4: from (irb):5
3: from /Users/irvingwashington/.gem/ruby/2.5.3/gems/logstash-logger-0.25.1/lib/logstash-logger/tagged_logging.rb:5:in `tagged'
2: from /Users/irvingwashington/.gem/ruby/2.5.3/gems/logstash-logger-0.25.1/lib/logstash-logger/tagged_logging.rb:18:in `tagged'
1: from /Users/irvingwashington/.gem/ruby/2.5.3/gems/logstash-logger-0.25.1/lib/logstash-logger/tagged_logging.rb:18:in `ensure in tagged'
NoMethodError (undefined method `size' for nil:NilClass)
This PR makes that check happen only on objects that respond to #empty?.
Logstash and Elasticsearch accept integer values for keyword type fields, such as
tags
.LogStashLogger filters tags, not to pass
nil
s or empty strings as tags to Logstash. However, the empty string check does fail on everything that is not a string, and it does so in not a very friendly manner:This PR makes that check happen only on objects that respond to
#empty?
.