2016-09-08 131 views
0

我试图从我的红宝石块得到一个变量,但厨师不承认我的变量以外的块。我怎样才能从红宝石块检索任何变量?提前致谢。厨师 - 从红宝石块变量

ruby_block 'fetch_path' do                    
    block do                       
     current_path = `sudo cat /var/chef/cache/revision`       
     new_path = current_path.to_s.split(',').last.split('"').drop(1).first  
     Chef::Log.info("### Your Current Directory: '#{new_path}' ###")   
    end                        
end                         

Chef::Log.info("### Your Current Directory: '#{new_path}' ###") 

在块内我可以得到一个值,但是,块 - 没有。

回答

0

这里有两件事。

首先,您的第二个Chef::Log.info将在编译阶段运行,此时您的ruby_block尚未收敛。见here about it。你可以用1)和2)前缀你的日志,以便先运行一次。

其次,有一个范围问题,当你在一个块中定义一个变量时,它只能在这个块中使用。

在厨师中,您可以使用node.run_state['variable']作为全局变量的全局变量,无需用例就很难展示这一点。

备注:您不应该使用反引号``构造来执行命令并偏好使用配方DSL中的shell_out