Rails 集成
Mongoid 可无缝集成到 Ruby on Rails 应用程序中。 本页介绍在 Rails 应用程序上下文中自动启用的功能以及可以手动启用的 Rails 相关功能。
配置
您可以通过访问 config.mongoid 在 application.rb
中设置 Mongoid 配置选项以及其他特定于 Rails 环境的选项。 mongoid:config
生成器将在config/initializers/mongoid.rb
中创建一个初始化程序,该初始化程序也可用于配置 Mongoid。 但请注意,在config/mongoid.yml
中设置的选项将优先于在其他地方设置的选项;建议尽可能使用mongoid.yml
作为 Mongoid 配置的默认位置。
module MyApplication class Application < Rails::Application config.mongoid.logger = Logger.new(STDERR, :warn) end end
模型预加载
为了正确设置单collection继承,Mongoid 需要在开发模式下的每个请求之前预加载所有模型。这可能会变慢,因此如果您不使用任何继承,建议您关闭此功能。
config.mongoid.preload_models = false
异常
与 ActiveRecord 类似,Mongoid 将 Rails 配置为自动将某些异常转换为众所周知的 HTTP 状态代码,如下所示:
Mongoid::Errors::DocumentNotFound : 404 Mongoid::Errors::Validations : 422
控制器运行时仪表
Mongoid 向 Rails 的检测事件process_action.action_controller
提供执行 MongoDB 命令(通过驱动程序命令监控订阅获取)所花费的时间。 该时间与查看时间一起记录,如下所示:
Completed 200 OK in 2739ms (Views: 12.6ms | MongoDB: 0.2ms)
此日志记录是自动设置的。
注意:所示时间是 MongoDB cluster 执行 MongoDB 操作所花费的时间,加上通过网络发送命令和从 MongoDB 接收结果所花费的时间。它不包括驱动程序和 Mongoid 生成查询或类型转换以及以其他方式处理结果所花费的时间。
Rake 任务
在 Rails 环境中使用 Mongoid 时,Mongoid 提供以下 rake 任务:
db:create
:仅出于依赖目的而存在,实际上不执行任何操作。db:create_indexes
:从模型中读取所有索引定义,并尝试在数据库中创建它们。db:remove_indexes
:从模型中读取所有二级索引定义。db:drop
:删除数据库中除系统集合之外的所有集合。db:migrate
:仅出于依赖目的而存在,实际上不执行任何操作。db:purge
:从数据库中删除所有数据,包括索引。 从 3.1.0 开始db:schema:load
:仅出于框架依赖目的而存在,实际上不执行任何操作。db:seed
:从 db/seeds.rb 为数据库播种db:setup
:创建索引并为数据库播种。db:test:prepare
:仅出于框架依赖目的而存在,实际上不执行任何操作。