2016-09-27 87 views
0

對廚師開發不熟悉:),屬性中的變量值似乎在ruby塊中不可見。如何訪問ruby_block中的節點屬性和配方變量

installer = node['jdk']['installer'] 

ruby_block "tar-folder-name" do 
     block do 
       command = 'tar -tvf /tmp/#{installer}.tar.gz | head -1 | awk \'{print $NF}\'' 
       command_out = shell_out(command) 
       node.default['tar_folder'] = command_out.stdout 
     end 
     action :run 
end 

它工作時,我硬編碼的變量值:

command = 'tar -tvf /tmp/jdk-7u85-linux-x64.tar.gz | head -1 | awk \'{print $NF}\'' 

如何使用在ruby_block節點屬性? 此外,如何使用紅寶石塊外的紅寶石塊的變量值?有關信息,當我嘗試使用node.tar_folder時,它沒有在ruby塊中提取的值。

在此先感謝。

+0

attributes/default.rb文件中設置的屬性是default ['jdk'] ['installer'] ='jdk-7u85-linux-x64' – hamdani

回答

0

你需要雙引號。 Ruby中的單引號不支持#{foo}插值語法。

+0

很好,非常感謝。如何訪問紅寶石塊以外的紅寶石塊屬性值,以便在配方中使用?我試過#{node.default ['tar_folder']},但它是空的。 – hamdani

+0

您可能正在編譯bs收斂問題。查看https://coderanger.net/two-pass/ – coderanger