如何将内存中的 MongoDB 与 Rails、Mongoid 和 Rspec 一起使用?
Posted
技术标签:
【中文标题】如何将内存中的 MongoDB 与 Rails、Mongoid 和 Rspec 一起使用?【英文标题】:How to use in-memory MongoDB with Rails, Mongoid, and Rspec? 【发布时间】:2021-07-11 05:45:34 【问题描述】:在单元或集成测试中,我需要能够使用内存中的 mongoDB 只是为了方便。我能做到吗?我尝试搜索解决方案,但没有关于如何编写 mongoid.yml 以在内存中使用的教程。
除此之外,我可以只在 mongoid.yml 中使用默认环境,而不是为开发和生产编写副本吗?就像搬家一样
development:
client:
...
production:
client:
...
进入
default: &default
client:
...
【问题讨论】:
【参考方案1】:Mongoid 配置(在你的例子中是 mongoid.yml)告诉客户端数据库在哪里。它不配置数据库。因此,没有 Mongoid 选项可以控制数据库的启动方式。
如果您的代码使用事务,最好的办法是创建一个zram 分区并使用 mongod 的--dbpath
参数使其将其数据存储在 zram 中。如果你的内存比你知道的要多,你也可以使用 tmpfs。
如果您的代码不使用事务,请尝试--storageEngine ephemeralForTest
。
mongoid.yml 需要为您使用的每个环境进行配置。该文件没有默认环境的概念(由 Rails 启动应用程序时决定),也不能省略环境。但是,您可以使用 YAML 锚来避免跨环境重复配置。
【讨论】:
以上是关于如何将内存中的 MongoDB 与 Rails、Mongoid 和 Rspec 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 MongoDB 和 Mongoid 在 Rails 3 上进行适当的数据库测试 (TDD)