właśnie zaktualizowany do najnowszej wersji (3.1.0) mongoid i sidekiq (2.7.2)
teraz dostaję błąd: failed with error 10068: "invalid operator: $oid"
od patrzenia do kodu widzę coś takiego: @selector={"_id"=>{"$oid"=>"[some id]"}}
co może się tu nie udać?
Odpowiedz
dodając to do mojego gemfile
naprawił problem:
gem 'multi_json', '1.5.1'
Chyba coś jest nie tak z najnowszej wersji (1.6.0)
EDIT: klejnot został zaktualizowany do nowej wersji (1.6.1), który rozwiązał ten problem. więcej tutaj: https://github.com/intridea/multi_json/issues/89
To się rzeczywiście dzieje, ponieważ BSON :: ObjectId nie jest częścią JSON ... więc kiedy Sidekiq próbuje serializacji args do pracownika, to pukes. Sprawdź ten komentarz: https://github.com/mperham/sidekiq/issues/951#issuecomment-19497803
Rozwiązaniem jest po prostu do konwersji identyfikatorów ciągów podczas wykonywania zadania jak:
EmailSubscribe.perform_async(user.id.to_s)
Świetne proste rozwiązanie, dzięki! – zishe
ta nie działa dla mnie (zobacz moją odpowiedź dla pełniejszego opisu problemu) . – Ben
To już nie jest dokładne, ponieważ Sidekiq upuścił użycie MultiJson na '# perform_async'. Sidekiq używa teraz podstawowego modułu JSON. Zobacz [ten komentarz autora Sidekiq'a] (https://github.com/mperham/sidekiq/issues/951#issuecomment-19497803) –
Może być również konieczne ustawienie cookie_serializer z: wartością hybrydową zamiast: json. Więcej szczegółów: https://github.com/rails/rails/issues/15111#issuecomment-43134650 – Francisco