2013-02-14 68 views
9

剛剛更新到mongoid(3.1.0)和sidekiq(2.7.2)
現在我收到錯誤的最新版本:從看failed with error 10068: "invalid operator: $oid"
到代碼我看到一個選擇像這樣:@selector={"_id"=>{"$oid"=>"[some id]"}}
這裏可能會出現什麼問題?

回答

7

加入這個我gemfile固定的問題:

gem 'multi_json', '1.5.1' 

我猜東西是錯誤的最新版本(1.6.0)

編輯:創業板已經更新到新版本(1.6.1)解決了這個問題。更多這裏: https://github.com/intridea/multi_json/issues/89

+0

這對我沒有工作(見我的回答對問題的更爲完整的描述) 。 – Ben 2013-06-24 13:47:29

+0

這不再準確,因爲Sidekiq在'#perform_async'上放棄了MultiJson的用法。 Sidekiq現在使用核心JSON模塊。請參閱[Sidekiq的作者的評論](https://github.com/mperham/sidekiq/issues/951#issuecomment-19497803) – 2014-02-26 18:08:27

+0

您可能還需要將cookies_serializer設置爲:hybrid值而不是:json。更多細節:https://github.com/rails/rails/issues/15111#issuecomment-43134650 – Francisco 2014-12-13 08:00:15

6

這實際上是因爲BSON :: ObjectId不是JSON的一部分...所以當Sidekiq試圖序列化ARG的工人,它pukes。檢查出此評論:https://github.com/mperham/sidekiq/issues/951#issuecomment-19497803

解決方法是簡單地進行類似作業時的ID轉換爲字符串:

EmailSubscribe.perform_async(user.id.to_s) 
+0

非常簡單的解決方案,謝謝! – zishe 2013-10-25 16:20:02

相關問題