2017-04-13 2 views
0

J'essaye de créer un hachage qui est généré dynamiquement avec seulement 1 ou 2 noms de clés connus au niveau supérieur, donc je peux le tester en prévision de la conversion en un JSON imbriqué. C'est ce que j'utilise:Ruby 2.2.5 erreur sur la maquette de hachage

ruby.exe -v

ruby 2.2.5p319 (2016-04-26 revision 54774) [i386-mingw32]

Je vais avoir des problèmes si l'analyse syntaxique, et je ne sais pas pourquoi, ni ce que je fais exactement mal . Je ne sais vraiment pas quelles sont mes limites, mais cela semble être un problème de formatage de base. Cependant, j'ai été aveugle au cours des 10 dernières minutes, alors peut-être qu'il y a un problème sous-jacent? Voici mon application tout à ce jour:

tcm = { \ 
     :tc => \ 
     { \ 
      :tests => \ 
      { \ 
       :alpha_tests => \ 
       { \ 
        :passing_tests => {}, \ 
        :failing_tests => \ 
        { \ 
         :alpha_test_1 => {:name => "alpha_test_1", :result => "FAILED"}, \ 
         :alpha_test_2 => {:name => "alpha_test_2", :result => "FAILED"} \ 
        } \ 
       }, \ 
       :beta_tests => \ 
       { \ 
        :passing_tests => \ 
        { \ 
         :beta_test_1 => {:name => "beta_test_1", :result => "PASSED"} \ 
        }, \ 
        :failing_tests => \ 
        { \ 
         :beta_test_2 => {:name => "beta_test_2", :result => "FAILED"} \ 
        } \ 
       } \ 
      }, \ 
      { \ 
       :test_session => 1293823 \ 
      } \ 
     } \ 
    } 

puts tcm 

Répondre

2

Le problème que je vois que vous avez manqué une clé:

{ \ 
    :test_session => 1293823 \ 
} \ 

devrait être

:some_key => { \ 
    :test_session => 1293823 \ 
} \ 

Aussi c'est un formatage bizarre. Mieux vaut

tcm = { 
    tc: { 
    tests: { 
     alpha_tests: { 
     passing_tests: {}, 
     failing_tests: { 
      alpha_test_1: { name: 'alpha_test_1', result: 'FAILED' }, 
      alpha_test_2: { name: 'alpha_test_2', result: 'FAILED' } 
     } 
     }, 
     beta_tests: { 
     passing_tests: { 
      beta_test_1: { name: 'beta_test_1', result: 'PASSED' } 
     }, 
     failing_tests: { 
      beta_test_2: { name: 'beta_test_2', result: 'FAILED' } 
     } 
     } 
    }, 
    key_to_fix: { 
     test_session: 1_293_823 
    } 
    } 
} 

puts tcm 
1

Si vous supprimez les alpha_tests et beta_tests sections de votre hachage est quelque chose comme ceci:

tcm = { \ 
     :tc => \ 
     { \ 
      :tests => \ 
      { \ 
      }, \ 
      { \ 
       :test_session => 1293823 \ 
      } \ 
     } \ 
    } 

Dans ce cas :tests => {}, {} est pas valide hachage Ruby. Vous pouvez utiliser un tableau :tests => [ {}, {} ]

BTW, Tous ces antislashs ne sont pas nécessaires, vous pouvez également écrire ce plus en utilisant succintement le nouveau style de hachage rubis ({test_session: 1293823} plutôt que {:test_session => 129823}) de sorte que votre code pourrait ressembler à:

tcm = { 
     tc: { 
       tests: [ 
         { ... }, 
         { 
          test_session: 1293823 
         } 
        ] 
      } 
     } 
+0

Quel soulagement! Je recevais des erreurs concernant '\ n', donc j'étais un ruby ​​newb avec un peu de prudence. –