前段时间写过一个mongo_mapper的demo程序,在写那个测试程序的时候,看见很多人都说mongoid更好,于是打算用一下试试,写了好久了,最近公司比较忙,没时间整理,现在贴出来。
新建项目
rails new spec_mongoid
一、mongonid
官方首页
http://mongoid.org/
1、安装gem
Gemfile中添加安装
gem "mongoid"
gem "bson_ext"
2、配置
执行命令:
$ rails g mongoid:config
会在系统中生成一个mongoid的配置文件
create config/mongoid.yml
如果出现 Could not find a JavaScript runtime.这个错误请在Gemfile中添加
gem 'execjs'
gem 'therubyracer'
修改config/application.rb文件,注释
# require 'rails/all'
用下面几行取而代之
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "rails/test_unit/railtie"
把文件environment/development.rb和environment/test.rb中注释掉
# config.active_record.mass_assignment_sanitizer = :strict
# config.active_record.auto_explain_threshold_in_seconds = 0.5
删除database.yml这个文件
记得加载
Mongoid.load!("path/to/your/mongoid.yml")
日志application.rb中添加
config.mongoid.logger = Logger.new($stdout, :warn)
关闭日志的方法是在mongoid的配置文件中
logger: false
3、语言
创建config/initializers/mongoid.rb
添加代码
Mongoid.add_language("zh-CN")
如果是支持所有语言的话
Mongoid.add_language("*")
=======================
问题
我用的全部都是最新版本,绝对的小白鼠阿,遇到了如下恶心问题
host is not a valid option for Mongo::Connection
官方说这是一个bug,需要重新安装这个gem
修改
gem 'mongoid', :git => 'git://github.com/mongoid/mongoid.git'
但是弄完了之后,又出现这个
undefined method `add_language' for Mongoid:Module (NoMethodError)
只好把mongo.rb中的
#Mongoid.add_language("*")
注释掉
=======================
$ rails g model user
invoke mongoid
create app/models/user.rb
invoke test_unit
create test/unit/user_test.rb
create test/fixtures/users.yml
上面的命令在执行之后,给user.rb自动加上Mongoid的引用
class User
include Mongoid::Document
end
随后运行rails console,测试了几个代码
ruby-1.9.2-p180 :003 > User.create(:name=>"李磊")
=> #<User _id: 4f630bf1421aa97127000001, _type: nil, name: "李磊", login: nil, age: nil>
ruby-1.9.2-p180 :002 > user = User.find('4f630bf1421aa97127000001')
=> #<User _id: 4f630bf1421aa97127000001, _type: nil, name: "李磊", login: nil, age: nil>
ruby-1.9.2-p180 :004 > user.update_attributes(:name=>"李磊",:login=>"lilei",:age=>15)
=> true
ruby-1.9.2-p180 :005 > user
=> #<User _id: 4f630bf1421aa97127000001, _type: nil, name: "李磊", login: "lilei", age: 15>
总体还算是成功
写个单元测试试一试
先把test_helper.rb中的下面代码注释掉
# fixtures :all
然后在user_test.rb中添加:
# encoding: utf-8
require 'test_helper'
class UserTest < ActiveSupport::TestCase
test "create a User" do
assert_difference "User.count",1 do
User.create(:name=>"李磊",:age=>15,:login=>"lilei")
end
lilei = User.last
assert_equal [lilei.name,lilei.age,lilei.login],["李磊",15,"lilei"]
end
end
运行单元测试:
rake test:units
Started
.
Finished in 0.020769 seconds.
1 tests, 2 assertions, 0 failures, 0 errors, 0 skips
总结:
除了那个新版本不稳定的bug之外,总体上比mongomaper还是简单一些,需要配置的东西很少
但是官网的说明文档是在是不敢恭维,导航的体验太差了,尤其是上下级的那个色调。
实例代码地址
https://github.com/chinacheng/spec_mongoid
分享到:
相关推荐
rails3-mongoid-devise, 示例 Rails 3.2应用,带有数据 Mongoid,用于验证 Rails 4.1有关设计的Rails 4.1示例应用程序,请参见:rails设计有一个用于设计的教程:Rails 设计教程。类似示例和教程这是来自 RailsApps...
Rails 3.2 API 是一个重要的开发资源,主要用于Ruby on Rails框架的开发。Rails是基于Ruby语言的一个开源Web应用程序框架,...在学习和使用Rails 3.2 API时,建议结合实际项目进行实践,这样能更好地理解和掌握其精髓。
### Agile Web Development with Rails for Rails 3.2 #### 核心知识点概览 - **Rails 3.2概述** - **敏捷开发方法论** - **Model-View-Controller (MVC) 模式** - **Ruby on Rails基础与高级特性** - **面向对象...
《Ruby on Rails 3.2 Tutorial》是Michael Hartl撰写的一本...虽然Rails版本已经更新至6.x,但3.2版本的学习依然有价值,因为许多核心概念和最佳实践仍然适用,而且理解老版本可以帮助你更好地理解新版本的变化和发展。
Web开发敏捷之道 应用Rails进行敏捷Web开发第4版 原版书及代码 (rails3.2版) 原书名为:Agile Web Development with Rails 4th for Rails 3.2 代码包含了 3.0、3.1、3.2 ,与原书配套的是3.2。 里面包含了第三版的...
rails-prelaunch-signup, web启动预启动站点的Rails 3.2应用程序示例 Rails 应用程序用于启动预启动注册站点Rails 3.2示例应用程序"测试版即将启动"启动预启动注册站点示例应用程序。Rails 预启动注册应用程序插件...
最后,`Rails应用中MongoDB+MySQL杂交`的话题意味着在同一个应用中同时使用MongoDB和MySQL是可能的。这通常用于混合使用关系型数据和非关系型数据,或者在迁移过程中逐步替换数据库。在这种情况下,需要分别配置`...
Wize 升级宝石 ... 使用rails new <rails> -T生成一个新的 rails 应用程序 复制过来 .git 应用程序 D b 脚本 => 垃圾箱 规格 小贩 配置/路由.rb 配置/初始值设定项(wrap_parameters.rb 除外) 配置/
描述中虽然没有具体信息,但我们可以推测这可能是一篇关于Rails中查询技巧和最佳实践的学习笔记,可能包括如何使用ActiveRecord查询接口进行复杂的数据库操作,如选择、过滤、排序、分组等。 标签 "源码" 暗示了这...
MongoRails是在Ruby on Rails应用中使用MongoDB作为数据存储的框架。MongoDB是一个NoSQL数据库,它使用文档型数据模型,提供了灵活性和高性能,而Rails是Ruby语言的一个流行Web开发框架,基于MVC(模型-视图-控制器...
使用fullCalendar使用Rails 3.2 我最近用FullCalendar和jquery.rest插件制作了一些资产宝。 这是一个简单的示例,可以看到它们的实际效果。 查看GemFile以及application.js和application.css文件,看看它们在起作用...
相关的示例应用程序可能会有用: 随书 展示了如何集成Foundation 展示了如何集成Bootstrap 使用OmniAuth进行身份验证使用Devise进行身份验证Rails 3.2 此仓库包含一个将与和集成的Rails 3.2示例应用程序。...
gem "mongoid_rails_migrations" 如何使用 创建迁移 $ rails generate mongoid:migration 运行迁移: $ rails db:migrate $ rails db:migrate:down VERSION= $ rails db:migrate:up VERSION= $ rails db:rollback...
mongoid_rails_migrations, Mongoid的数据迁移 发行说明最新版本,1.1. x, 目标 Mongoid> = 4.0.0和 Rails> = 4.2.0.对于 Rails> = 3.2.0和 Mongoid> = 3.0.0,使用版本 1.0.0.
在Ruby on Rails框架中,嵌套表单...”这篇文档,开发者不仅可以学习如何使用嵌套表单,还能了解到如何在实际项目中有效地应用和优化这一功能。文档中的示例代码和解释将有助于深入理解这一关键概念,并提高开发效率。
在Mac上安装MongoDB 启动MongoDB服务器mongodMongodb数据目录权限 sudo chmod 777 /data/db创建一个Rails项目使用'--skip-active-record'开关创建Rails项目。 rails new ruby-on-rails-with-mongodb --skip-active-...
在本教程中,我们将深入探讨如何在Rails 3.2框架中使用嵌套表单,特别是在"Rails 3.2:嵌套形式的演示第4部分:切换到目标计算机!"这一主题中。这个示例将展示如何为Ship和Pilot模型添加验证规则,以及如何在Ruby ...
pjax_rails, Rails的PJAX集成 用于 Rails 3.2 的 PJAX 通过资产管道将 wanstrath PJAX的Chris 集成到 Rails 3.2 中。要激活,请将它的添加到 app/assets/javascripts/application.j
学习MongoDB API 端点 User#create (创建一个新用户) curl -v -H "Content-type: application/json" -X POST http://localhost:3000/api/v1/users -d '{"user":{"name":"nitin misra", "email":"nitin@example....
3. Rails 3.2: Rails 3.2进一步优化了性能,引入了低延迟的LogSubscriber,提升了日志记录的效率。ActiveRecord的查询性能得到提升,例如添加了`pluck`方法,可以直接获取数据库列的值。此外,`rails generate ...