當我使用identity_cache(v 0.0.4)和delayed_job(v 3.0.3)時,出現錯誤「undefined method`tag ='for#< Hash:0x007f9836dfdab0 >相同的應用程序。未定義的哈希方法標記使用identity_cache和delayed_job
我跟着堆棧跟蹤和發現的delayed_job覆蓋的ActiveRecord :: Base的#encode_with。在delayed_job的版本,它會調用
coder.tag = ['!ruby/ActiveRecord', self.class.name].join(':')
看來的ActiveRecord :: Base的預期編碼器是一個哈希,而delayed_job假設它是一個Psych :: Coder,它有一個tag =方法。
最後,identity_cache確實調用了encode_with,並傳遞了一個Hash。因此錯誤。
我正在使用紅寶石1.9.3p429,其中包括精神作爲stdlib。我沒有在任何地方指定yaml解析器引擎,並且當我檢查時它總是返回psych(有些人抱怨類似的問題,但他們使用syck進行yaml解析)。
所以,我想問題是,我該如何讓delayed_job和identity_cache一起玩呢?