lea*_*mer 6 mongodb resque ruby-on-rails-3
几天前工作的工人因某种原因停止工作.
resque日志报告Mongo::OperationFailure错误的异常invalid operator: $oid
class SimilarTargets
@queue = :similar_queue
def self.perform(target_id)
source_target = Target.find(target_id)
....
end
end
Run Code Online (Sandbox Code Playgroud)
即使通过rails控制台传入直接字符串,工作程序也会在Target.find(target_id)上失败.
Target.find(id)在控制台和代码中的其他地方正常工作,我无法弄清楚为什么这个失败了,即使工作者类在上周从未改变过.
你最近升级了Mongoid吗?该错误使得它听起来像.find()方法正在接收类似的东西{"$oid": "[STRING]"},这是Mongo的Object ID的严格json表示.
假设你只想快速解决问题,你可以用这样的东西解决它:
target_id = target_id["$oid"] unless target_id.is_a?(String)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1582 次 |
| 最近记录: |