2012-03-02 37 views
23

私は自分のテーブル用のフィクスチャを作成しています。 coloumの1つはJSON文字列を値として取り込みます。これJSONデータをYAMLファイルに埋め込む

Fixture::FormatError: a YAML error occurred parsing /home/saurajeet/code/dcbox/test/fixtures/hardware.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html 
The exact error was: 
    ArgumentError: syntax error on line 145, col 73: ` portslist: [{"name":"ob1","port_num":0,"port_type":"network"},{"name":"ob2","port_nu'..... 

任意溶液:

問題は、固定具として失敗をロードされません。私は引用符にそれを取ることはトリックを行う必要があります信じて

+0

問題のあるファイルが正確に貼り付けられていますか?どのプロセッサを使用していますか?エラー報告はあなたが* TAB *文字を持っていることです、それは非常に特定の問題です。 – clarkevans

答えて

28

:あなたが行を折り返すことができますので、受け入れ答えに

portslist: '[{"name":"ob1","port_type" ... }]' 
+0

これは明らかです...特別な記号をエスケープしようとしました... :( – Saurajeet

+2

これは値を文字列にするため、実際には埋め込まれていないので、ブロックスカラーとインデントを使用したいと思います。 – clarkevans

+0

文字列はスカラー型ですが、私はあなたが意味するものを得ます。 – Thermatix

21

clarkevans'はコメントは、JSONの長いビットのためのより良い答えを示唆しました。私は彼が言及したブロックスカラー構文を見上げて、私はここに例が含まれるであろうと思った:

portslist: > 
    [{"name":"ob1","port_num":0,"port_type":"network"}, 
    {"name":"ob2","port_nu... 
6

あなたは文字列を持っている場合、あなたはヴラドKhomichが述べたような単純なを使用することができます。

portslist: '[{"name":"ob1","port_num":0,"port_type":"network"},...]' 

場合あなたは、あなたがto_jsonをを使用してJSON文字列にエスケープするために検査することができERBを使用して、オブジェクトを持っています

portslist: <%= [{name: 'ob1', port_num: 0, port_type: 'network'},...].to_json.inspect %> 

そして、あなたは大規模なJSONの仕様を持っている場合、あなたが分離し、それをファイルに保存することができますし、

portslist: <%= File.read('/path/to/file.json').inspect %> 
3

を完全なものにするために:あなたはActiveRecord::Storeを使用している場合、あなたは、単に同じデータのYAML表現を使用してデータを読み込むことができさえ、あなたがきれいにあなたのYAMLファイルを保つことができるので、ルビーを使用してロードそれはJSONストアの場合:私のテーブルで

one: 
    portslist: 
    - 
     name: 'ob1' 
     port_num: 0 
     port_type: 'network' 
    - 
     name: 'ob2' 
     port_num: 1 
     port_type: 'network' 
0

、コラムstripe_connectはタイプJSONBです。フィクスチャでは、ここで働いています。外側の一重引用符は必要ですが、角かっこは必要ではありません。一重引用符間のすべてが1つの長い行です。

stripe_connect:「{ "範囲": "READ_WRITE"、 "livemode" 偽 "TOKEN_TYPE": "ベアラ"、 "access_tokenは": "sk_test_madeupvalue"、 "refresh_token": "rt_Ae29madeupvalueyX"、 "stripe_user_id": "acct_103yZabcdefg"、 "stripe_publishable_key": "pk_test_0HEOmadeupvalue"} '

関連する問題