前段时间写过一个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...
这是Agile Web Development with Rails for Rails 3.2, 为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 预启动注册应用程序插件...
ruby on rails对mongodb的操作ruby on rails对mongodb的操作ruby on rails对mongodb的操作ruby on rails对mongodb的操作
rails 3.2 API 用webzip抓下来的最新的
Michael Hartl写的Ruby on Rails Tutorial Learn Rails by Example,最新的3.2版本,英文资料,特别适合rails入门!
Wize 升级宝石 ... 使用rails new <rails> -T生成一个新的 rails 应用程序 复制过来 .git 应用程序 D b 脚本 => 垃圾箱 规格 小贩 配置/路由.rb 配置/初始值设定项(wrap_parameters.rb 除外) 配置/
sunspot 学习笔记-安装以及使用,另外还有部分crontab插件的安装以及使用,适用与rails3
使用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.
Rails 3.2:嵌套形式的演示,第3部分:我们正在开始进攻!
在Mac上安装MongoDB 启动MongoDB服务器mongodMongodb数据目录权限 sudo chmod 777 /data/db创建一个Rails项目使用'--skip-active-record'开关创建Rails项目。 rails new ruby-on-rails-with-mongodb --skip-active-...
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....
NULL 博文链接:https://citi21558541.iteye.com/blog/437132
Rails 4 引擎通过电子邮件形式向应用程序添加订阅。...要将此 gem 用于 rails 3.2,请使用高于 0.1 且低于 1.0 的版本。 您可以在找到最新的 rails 3.2 版本。 演示 。 安装 添加到您的 Gemfile: gem 'landing_page'
Rails > 3.1 使用 jQuery Sausage 的无尽页面。 Spaghetti 支持和 。 安装 将此行添加到应用程序的 Gemfile 中: gem 'spaghetti' 然后执行: $ bundle 或者自己安装: $ gem install spaghetti 用法 确保将...