1
我正在忙於編寫一個數據遷移,它將允許我們將Syam中的yamlers更改爲Psych。爲此,我需要遷移數據庫中的一些列。我碰到以下奇怪的邊緣情況Syck.dump空哈希引發IO異常
(rdb:1) Syck.dump({})
*** NoMethodError Exception: undefined method `[]' for #<StringIO:0x007f9142eb7438>
/Users/donovanthomson/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/psych/deprecated.rb:21:in `quick_emit'
/Users/donovanthomson/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/syck/rubytypes.rb:16:in `to_yaml'
/Users/donovanthomson/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/syck/rubytypes.rb:451:in `to_yaml'
/Users/donovanthomson/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/syck.rb:119:in `dump'
所以顯然是空的哈希不能用Syck轉儲?
這很奇怪。你可以編輯你的問題,包括整個堆棧跟蹤? –
@Jordan,任何建議將不勝感激! –
你有Psych和Syck同時加載嗎?我認爲這可能是你的問題。它看起來像'syck/rubytypes.rb'正在調用'YAML.quick_emit'(而不是'Syck.quick_emit'?),它由Psych代替Syck處理。我現在很流動,儘管現在我無法進一步縮小範圍。 –