[英]Chef Recipe Compile Error
有誰知道為什么以下代碼會導致錯誤: “ riak-1.4.2”的未定義方法'tar':String
remote_file "/vagrant/usr/src/#{node.default['riak']['version'].tar.gz}" do
source "#{node.default['riak']['url']}"
mode 0755
notifies :run, "bash[extract_riak]", :immediately
end
bash "extract_riak" do
code <<-EOH
# Following is the line which causes the error.
/bin/tar xzf /vagrant/usr/src/#{node.default['riak']['version']}.tar.gz -C /vagrant/usr/src/#{node.default['riak']['version']}
EOH
notifies :run, "bash[make_riak]", :immediately
end
這行引發錯誤:
remote_file "/vagrant/usr/src/#{node.default['riak']['version'].tar.gz}"
.tar.gz
應該在方括號之外,如下所示:
remote_file "/vagrant/usr/src/#{node.default['riak']['version']}.tar.gz"
括號之間的所有內容都作為ruby代碼執行,並且結果將其放置在字符串中。 node.default['riak']['version'].tar.gz
是函數調用鏈,包括最后調用不存在的tar
和gz
函數。 這些是文件名的一部分,應放在方括號之外。
附帶說明一下,您可能希望使用node[:attribute]
來獲取屬性,而僅使用node.default[:attribute]
來設置屬性。
代替:
#{node.default['riak']['version']}.tar.gz
你要:
#{node.default['riak']['version'].tar.gz}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.