2014-07-15 2 views
0

해시에서 파일로 데이터를 저장하려고하면 해시의 마지막 행만 가져옵니다. 무슨 일 이니?해시에서 YAML 파일로 데이터 저장

{:"client-1.domaine.net"=>"www.client-1.domaine.net/index.html/xxxxxx"} 

{:"client-2.domaine.net"=>"www.client-2.domaine.net/index.html/xxxxxx"} 

내가 무엇입니까 출력 YAML 파일은 다음과 같습니다 :

h= {} 
infoArray.zip(href) {|a,b| h[a.to_sym] = b } # i convert two array in hash 

File.open("lib/alreadyPass.yml","w") do |file| 
     file.write h.to_yaml 
    end 

내 해시의 예는

--- 
:client-1.domaine.net: 
- www.client-1.domaine.net/index.html/xxxxxx 
+3

테스트하기 쉽도록'infoArray'와'href'에 대한 정의를 추가해야합니다. 그러나 코드를 실행하고 파일에서 두 줄을 얻을 수 있습니다. 그러나 나는'{: "client-1.domaine.net"=> "www.client-1.domaine.net/index.html/xxxxxx", "client-2.domaine.net" => "www.client-2.domaine.net/index.html/xxxxxx"}''h '에 두 개의 해시가있는 것 같습니다. 이것이 실행중인 코드입니까? 루비 1.9.2에서 어떤 버전을 사용하고 있습니까? – Patru

답변

2

올바른 방법은 다음과 같습니다

require 'yaml' 
array_of_hashes = [{:"client-1.domaine.net"=>"www.client-1.domaine.net/index.html/xxxxxx"},{:"client-2.domaine.net"=>"www.client-2.domaine.net/index.html/xxxxxx"}] 

File.open("lib/yamlfile.yml","w") do |file| 
    file.write array_of_hashes.to_yaml 
end 

해시 해시에서도 작동합니다. ..