2013-07-16 10 views
5

Ich habe eine Hash-Zuordnung in meiner Yaml-Datei wie folgt. Wie kann ich es in einem einfachen Ruby-Skript durchlaufen? Ich möchte den Schlüssel in einer Variablen und einem Wert in einer anderen Variablen in meinem Ruby-Programm während der Iteration speichern.Wie durchläuft man eine YAML-Hash-Struktur in Ruby?

source_and_target_cols_map: 
- 
    com_id: community_id 
    report_dt: note_date 
    sitesection: site_section 
    visitor_cnt: visitors 
    visit_cnt: visits 
    view_cnt: views 
    new_visitor_cnt: new_visitors 

die Art, wie ich die Daten aus der YAML-Datei bin immer unter:

#!/usr/bin/env ruby 

require 'yaml' 

    config_options = YAML.load_file(file_name) 
    @source_and_target_cols_map = config_options['source_and_target_cols_map'] 
puts @source_and_target_cols_map 
+0

dass Taste ' 'source_table'' nicht ist in Ihrem 'YAML' anwesend –

+0

Ja, ich weiß. Es ist nur ein Beispiel. Wie mache ich es präsent, damit ich die Werte des Schlüsselwertpaares durchlaufen kann? – Doublespeed

Antwort

1

Wie pro Ihre yaml Datei es Ihnen die unten Hash von der Linie bekommen sollte config_options = YAML.load_file(file_name)

config_options = { 'source_and_target_cols_map' => 
[ { 'com_id' => 'community_id', 
    'report_dt' => 'note_date', 
    'sitesection' => 'site_section', 
    'visitor_cnt' => 'visitors', 
    'visit_cnt' => 'visits', 
    'view_cnt' => 'views', 
    'new_visitor_cnt' => 'new_visitors' } 
    ]} 

Dann durchlaufen Sie die folgende Vorgehensweise:

+0

danke lassen Sie mich das versuchen und sehen, ob es funktioniert – Doublespeed

+0

Okay, dass Yaml nicht funktioniert. Ich denke, dass etwas mit meinem Yam falsch ist. 'konnte YAML nicht in Zeile 8 Spalte 1 (Psych :: SyntaxError) analysieren' – Doublespeed

+0

@ user2081579 ja die * YAML * die du gepostet hast, ist nicht gültig. Aber du solltest den * Hash * bekommen, wie ich es dir gegeben habe. Dann kannst du mit jeder Methode auf den inneren * Hash * zugreifen. –

3

Die YAML.load_file Methode sollte eine rubin Hash zurückgeben, so dass man über sie auf die gleiche Weise laufen kann ganz normal, die jede Methode:

require 'yaml' 

config_options = YAML.load_file(file_name) 
config_options.each do |key, value| 
    # do whatever you want with key and value here 
end 
Verwandte Themen