1
在廚師的食譜我想廚師:廚師,客戶端首先散步代碼執行它
- 之前解壓文件
- 使用其中的一個文件中的zip遍歷內容。
我遇到的問題是,當我運行廚師客戶端失敗說「沒有這樣的文件或目錄」之前,它甚至解壓縮在步驟1
這裏的文件是提供商的代碼:
action :create do
if @current_resource.exists
converge_by("Create #{ @current_resource }") do
unzip('realFileToUnzip','someLocation')
do_something_with_file('realFileToOpen')
end
end
end
....
在同一個供應商的文件我有一個高清的定義如下
def unzip(fileToUnzip, unzipToLocation)
bash "unzip" do
user "root"
cwd "/tmp"
code <<-EOH
unzip -o #{fileToUnzip} -d #{unzipToLocation}
EOH
end
end
,這也變形點焊
def do_something_with_file(fileToConvert)
::File.open(fileToConvert, 'r') do |properties_file|
properties_file.read.each_line do |line|
puts line
end
end
end
似乎廚師客戶端在執行代碼之前先行走代碼。所以在遍歷文件時不存在,因爲它不會出現在執行解壓縮代碼之前。
我該如何避免這種情況?
您需要將該代碼封裝在'ruby_block'資源的'do_something_with_file'中。 – sethvargo