2016-07-25 1 views
-1

Ich habe zwei YAML-Dateien mit ähnlichen Formaten, aber eines läuft und das andere läuft nicht, wenn ich Integrationstests auf meiner Rails-App starte. HierYAML-Datei hat einen Syntaxfehler, aber es sieht so aus, als ob es das gleiche Format wie ein anderes hat, das funktioniert?

ist die erste YAML-Datei, die nicht funktioniert:

prince_edward_island: 
    name: 'prince edward island' 
    country: 'Canada' 

nova_scotia: Name: 'neuschottland' Land: 'Kanada'

newfoundland: 
    name: 'newfoundland' 
    country: 'Canada' 

new_brunswick: 
    name: 'new brunswick' 
    country: 'Canada' 

quebec: 
    name: 'quebec' 
    country: 'Canada' 

manitoba: 
    name: 'manitoba' 
    country: 'Canada' 

alberta: 
    name: 'alberta' 
    country: 'Canada' 

ontario: 
    name: 'ontario' 
    country: 'Canada' 

british_columbia: 'Canada' 
    name: 'british columbia' 
    country: 'Canada' 

saskatchewan: 'Canada' 
    name: 'saskatchewan' 
    country: 'Canada' 

Hier ist die zweite YAML Datei, die funktioniert:

student_advisor_message: 
    body: 'This is a message' 
    subject: 'Subject!' 
    user: student_advisor 

manager_message: 
    body: 'This is a message' 
    subject: 'Subject!' 
    user: manager 

read_manager_message: 
    body: 'This is a message' 
    subject: 'Subject!' 
    user: manager 

agent_manager_message: 
    body: 'This is a message' 
    subject: 'Subject!' 
    user: agent_manager 

message_for_jack: 
    body: 'This is a message' 
    subject: 'Subject!' 
    user: manager 

message_for_jack_sent: 
    body: 'This is a sent message' 
    subject: 'Sent Subject!' 
    user: manager 

message_for_jack_trash: 
    body: 'This is a trashed message' 
    subject: 'Trash Subject!' 
    user: manager 

Der Fehler lautet:

ERROR: 

while parsing a block mapping 
    in "<unicode string>", line 1, column 1: 
    prince_edward_island: 
    ^
expected <block end>, but found '<block mapping start>' 
    in "<unicode string>", line 34, column 3: 
     name: 'british columbia' 

Kann jemand erklären den Unterschied, den ich zwischen den beiden bin fehlt? Für beide verwende ich Leerzeichen, keine Tabs.

+0

Können Sie näher auf den Fehler eingehen, den Sie bekommen? –

Antwort

0

Es gibt mehrere Fehler:

sowohl für I Registerkarten, keine Leerzeichen.

Tabs sind als Einrückungszeichen in YAML nicht zulässig.

country: 'Canada' 

    nova_scotia: 

Hier geben Sie sowohl eine skalare ('Canada') und eine Abbildung (beginnend mit nova_scotia:) als Wert für den Schlüssel country. Es darf nur einen Wert für diesen Schlüssel geben. Sie müssen entweder den Skalar 'Canada' entfernen oder das Mapping an anderer Stelle verschieben.

british_columbia: 'Canada' 
    name: 'british columbia' 
    country: 'Canada' 

saskatchewan: 'Canada' 
    name: 'saskatchewan' 
    country: 'Canada' 

Hier machen Sie zweimal den gleichen Fehler erneut.

+0

Für den ersten meinte ich Leerzeichen, keine Tabs ** Ich entschuldige mich. Für die zweite wurde die zweite Hälfte meines Codes versehentlich neu tabelliert. Was die dritte betrifft, glaube ich, dass hier der Fehler liegt, danke. Amit hatte auch die richtige Antwort, aber da dies für die unbearbeitete Frage gründlicher ist, akzeptiere ich diese. –

0

Ein Elternteil in der YAML-Datei kann keinen Wert haben.

Wenn Sie (Canada) aus diesen Zeilen entfernen (oder kommentieren), wird es ordnungsgemäß analysiert.

british_columbia: 'Canada' 
    name: 'british columbia' 
    country: 'Canada' 

saskatchewan: #'Canada' 
    name: 'saskatchewan' 
    country: 'Canada' 
Verwandte Themen