2016-05-03 65 views
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轉儲?

+0

這很奇怪。你可以編輯你的問題,包括整個堆棧跟蹤? –

+0

@Jordan,任何建議將不勝感激! –

+0

你有Psych和Syck同時加載嗎?我認爲這可能是你的問題。它看起來像'syck/ruby​​types.rb'正在調用'YAML.quick_emit'(而不是'Syck.quick_emit'?),它由Psych代替Syck處理。我現在很流動,儘管現在我無法進一步縮小範圍。 –

回答

0

原來我在做一些非常愚蠢的事情,我在運行遷移之前已經在本地刪除了Syck依賴項。