2014-04-04 1 views
0

요리사의 배열을 통해 루프를 실행하려고합니다 (루프에 bash 명령이 포함되어 있음). 누구든지 이것에 대해 어떤 생각을 가지고 있습니까?요리사에서 bash를 루프 할 수 없습니다.

instances.each do |instance| 
    bash "create_link-#{instance}" do 
    code <<-EOH 
     echo "ln -fs #{source} #{instance}" 
    EOH 
    end 
end 

BTW,이 관용적 요리사되지 않습니다 : 사람이 곧 도울 수 있다면

symlink_db = data_bag_item(“my”_db,”my”_db) 
source = symlink_db[“sourceFile”] 
instances = symlink_db["Instances"].split(',') <---Instances is a comma separated string in Databag 

bash "create_link" do 
    puts "1: #{instances}"  <-------Puts all instances correctly 
    instances.each do |instance| 
     puts "2: #{instance}" <------ This prints each instance in loop correctly 

     code <<-EOH   
      echo "ln -fs #{source} #{instance}"; <----- This is printed only for last instance in the loop 
     EOH 
     end 
end 

당신은 루프 내부의 bash는 자원이 필요합니다 감사합니다

답변

5

..... 감사합니다. 당신은 단순히이 같은 link 리소스를 사용한다 :

instances.each do |instance| 
    link instance do 
    to source 
    end 
end 

이 방법의 장점은 레시피 크로스 플랫폼을 만드는 것입니다. 또한 훨씬 더 읽기 쉽습니다.