YAML 出現 syntax error (Amazon + database.yml)


#1

這是一個 在 Amazon ec2 上的問題

我在上面安裝了 mysql username root 密碼 12345
Gemfile有設定
group :production do
gem "mysql2"
end

可是當我要RAILS_ENV=production rake db:create,就一直出問題,希望有前輩可以指導,
如果還需要提供相關的資料,我會補上



#2

… hmm … yaml 和 python 一樣用縮排 來做 block 的,所以你的圖已經說明一切哩(DEMO code 的 key 不分 symbol / string)

#Hash
{d: {a: 1 , b: 1} , p:{a: 2 , b: 2}}
#全等於
d:
  a: 1
  b: 1
p:
  a: 2
  b: 2

#你的是
d:
  a: 1
  b: 1
p:
  a: 2

 b: 2

okay,所以看得出問題點咪?你的 socket 那段上面不要空行,然後多補一個空白就 ok 了(且 tab 和空白不能混用),否則 YAML 解析器會把你的結構解析錯誤的

上面 DEMO 沒感覺的話,如果寫複雜點給你看唄

#Hash
{d: {a: 1 , b: {c: 123 , d: {e: 345} , f: 9} , g: 10} , p: {a: 2 , b: {c: 234 , d: {e: 456} , f: 8} , g: 3}}
#全等於
d:
  a: 1
  b:
    c: 123
    d:
      e: 345
    f: 9
  g: 10
p:
  a: 2
  b:
    c: 234
    d:
      e: 456
    f: 8
  g: 3
#也全等於(和縮排數量無關,單純同層需要對等)
d:
 a: 1
 b:
  c: 123
  d:
      e: 345
  f: 9
 g: 10
p:
  a: 2
  b:
       c: 234
       d:
        e: 456
       f: 8
  g: 3

ruby 的 YAML 的 doc 在這邊
https://ruby-doc.org/stdlib-2.1.0/libdoc/yaml/rdoc/YAML.html
所以你可以把上面的那個 hash 去 dump / load 後 puts 出來看看之類的

最後,你的 error log 已經說明一切哩,YAML + syntax error 代表"你寫錯了"
& 改標題來造福未來相同錯誤的人,感恩您的貢獻,以上 : )