2016-05-03 66 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依赖项。