我目前的rails应用程序由mongoid / mongo支持。在每次测试之间我想清除数据库。对此我运行
::Mongoid.database.collections.select { |c| c.name !~ /^system/ }.each { |c| c.remove() }
问题是删除集合似乎在后台运行。有时下一个测试将开始,插入一个文档,然后通过删除操作清除它。有没有办法让集合删除阻止?
我知道有一个$ atomic选项,看过mongo / collection的源代码我看不到任何方法可以通过该选项。我怎样才能阻止collcetion删除?
答案 0 :(得分:1)
当你调用remove时,Mongoid只是将你发送的内容作为参数传递给底层的mongo ruby驱动程序。从API文档http://api.mongodb.org/ruby/1.2.1/Mongo/Collection.html#remove-instance_method safe => true阻止,直到完成为止。所以:
::Mongoid.database.collections.select { |c| c.name !~ /^system/ }.each { |c| c.remove(:safe => true) }