2017-01-01 40 views
0

我想一个logstash过滤器中使用Ruby代码,但它给出了一个错误: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的ruby过滤器中导入模块?

+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" 
    } 
    }