如何解释Ruby“end”调用方法

时间:2015-03-13 10:08:05

标签: ruby chef

在学习chefspec时,我找到了以下代码:

describe 'example::default' do
  let(:chef_run) do
    ChefSpec::SoloRunner.new do |node|
      node.set['cookbook']['attribute'] = 'hello'
    end.converge(described_recipe)
  end
end

结束调用方法收敛,我是ruby和chefspec的新手,我用google搜索了很多时间并没有得到答案,有人可以帮忙解释一下语法?

2 个答案:

答案 0 :(得分:6)

它与:

相同
x = ChefSpec::SoloRunner.new do |node|
  node.set['cookbook']['attribute'] = 'hello'
end
x.converge(described_recipe)

答案 1 :(得分:5)

在新的converge对象上调用方法ChefSpec::SoloRunner

看看下面的例子,用块初始化一个对象。

Array.new(4) { 5 }.length
# => 4 
Array.new(4) do
  5
end.length
# => 4
Array.new(4) do
  5
end.class
# => Array