最近在研究elk,需要嵌入ruby代码,还望有懂ruby的帮下忙,解释一下,谢谢了!
就是解释以下下面这两种 每一部分 代表什么就好了。
//第一种
xx "xxx" do
end
//第二种
xx("xxx") do |xx|
end
原代码如下
test "drop percentage 100% " do
parameters do
{"percentage"=>1}
end
in_event {{"message"=>"bonjour bonjour","date"=>"2018-2-2"}}
expect("drops the event") do |events|
puts "-------->expect"
events.size == 0
end
end
这段代码是一个单元测试,解释大概如下:
这段代码的意思是,parameters是一个不带参数的函数,这个函数可以跟一个代码块,也就是do...end这部分,嵌入到函数里yield部分执行操作,比如这里就将一个赋值操作给了parameters函数。
这个yield怎么用呢?请看下面这个例子:
然后输出1、2、3
同理,
这里是一个带参数的函数,后面接了一个代码块,函数是expect目的是为了做一个测试的断言,参数“drops the event”是这个断言的描述——希望抛掉所有的events,然后函数可以在yield的时候给一个参数,让代码块使用yield(events),比如这里将events拿出来,代码块来判定这个events.size为0。
这个expect函数大概是这样定义的:
你看具体使用的时候,代码块判定了events.size == 0,然后这个结果true在expect函数里赋值给了result,expect函数继续往下执行。
另外,代码块不止是do...end和do |unit| ... end,这里了in_event后面的{...}也是代码块,代码块的内容是{"message"=>"bonjour bonjour","date"=>"2018-2-2"}这个哈希,另外还有种代码块的使用是{|unit|...}。也就是,你可以把左大括号看成do,把右大括号看成end。
希望能帮助到你。