2017-01-01 2 views
0

Я пытаюсь использовать код рубин в logstash фильтр, но он дает ошибку:Logstash - модуль импорта внутри рубина фильтр

filter { 
    ruby { 
     code => " 
arr = [ {id: 1, name: 'John' }, {id: 2, name: 'Sam' }, {id: 3, name: 'Bob' }] 
if arr.any? {|h| h[:name] == "Sam"} 
event['doc']['userInput']['programName'] = '222222' 
end" 
     } 
     } 

я предполагаю, что ошибка в том, что мне нужно импортировать перечислимых модуль (beucase без строки arr.any? {|h| h[:name] == "Sam"} не выдается ошибка), но я понятия не имею, как импортировать модуль внутри рубинового фильтра logstash?

+1

Проблема заключается в том, что 'Sam' находится между двойными кавычками, вам нужно использовать одинарные кавычки во всем блоке кода, так как код окружен двойными кавычками. – Val

+0

@Val - Большое вам спасибо, вы решили! Если вы напишете свой комментарий в качестве ответа, я обязательно его уступлю. – BornToCode

ответ

1

Проблема заключается в том, что Sam находится между двойными кавычками, вам нужно использовать одинарные кавычки во всем блоке кода, так как код окружен двойными кавычками.

filter { 
ruby { 
    code => " 
     arr = [ {id: 1, name: 'John' }, {id: 2, name: 'Sam' }, {id: 3, name: 'Bob' }] 
     if arr.any? {|h| h[:name] == 'Sam'} 
      event['doc']['userInput']['programName'] = '222222' 
     end" 
    } 
    } 
Смежные вопросы