2013-02-14 7 views
9

nur auf die neueste Version von mongoid aktualisiert (3.1.0) und sidekiq (2.7.2)
jetzt habe ich den Fehler bin immer: failed with error 10068: "invalid operator: $oid"
aus suchen in den Code sehe ich eine Auswahl wie folgt: @selector={"_id"=>{"$oid"=>"[some id]"}}
was kann hier falsch gehen?

Antwort

7

, diese zu meinen gemfile das Problem behoben:

gem 'multi_json', '1.5.1' 

Ich denke, etwas falsch ist mit der neuesten Version (1.6.0)

EDIT: der Edelstein auf eine neue Version aktualisiert wurde (1.6.1) das dieses Problem behoben hat. mehr hier: https://github.com/intridea/multi_json/issues/89

+0

Das ist nicht für mich arbeiten (siehe meine Antwort für eine vollständigere Beschreibung des Problems) . – Ben

+0

Dies ist nicht mehr korrekt, da Sidekiq die MultiJson-Verwendung bei '# perform_async' gelöscht hat. Sidekiq verwendet jetzt das Kern-JSON-Modul. Siehe [dieser Kommentar von Sidekiqs Autor] (https://github.com/mperham/sidekiq/issues/951#issuecomment-19497803) –

+0

Möglicherweise müssen Sie auch cookies_serializer mit folgendem Wert setzen: hybrid value anstelle von: json. Mehr Details: https://github.com/rails/rails/issues/15111#issuecomment-43134650 – Francisco

6

Dies geschieht tatsächlich, weil BSON :: ObjectId nicht Teil von JSON ist ... also wenn Sidekiq versucht, die Argumente an den Arbeiter zu serialisieren, kotzt es. Überprüfen Sie diesen Kommentar aus: https://github.com/mperham/sidekiq/issues/951#issuecomment-19497803

Die Lösung ist einfach IDs in Strings zu konvertieren, wenn ein Job wie ausführen:

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

Große einfache Lösung, danke! – zishe

Verwandte Themen