之前做那个Vim-Tips.com是基于Rails+MySQL的,部署在我的DigitalOcean的VPS上。随着近来NoSQL来势汹汹,我也想顺便练手一下MongoDB,所以,打算把Vim-Tips.com的后端数据库从MySQL移植到MongoDB来。和Active Record一样,基于MongoDB也有个比较不错的ORM框架,叫做Mongoid。照着官网的教程,在Nitrous.IO上先练手搭建了一下环境,过程还比较顺利,这里小记一下,当作备忘。之后有时间,就打算正式着手把VimTips.com迁移到MongoDB。
安装MongoDB
安装MongoDB的方式很多,这里不介绍了。
###添加Gem
按照官方文档的指引,首先得安装Mongoid和它所依赖的gem。在rails项目中的Gemfile中,添加gem:
1 | gem 'mongoid', '~>3.0.0' |
添加完毕,直接bundle install安装
生成Mongoid的配置文件
Mongoid安装好后,可以生成Mongoid的配置文件,配置文件是YAML格式的。通过rails命令可以直接生成:
1 | rails g mongoid:config |
生成好的配置文件,放在项目的目录:./config/mongoid.yml 接下来就是修改配置文件了,一个简单的配置文件如下:
1 | development: |
由于是连接本机,所以MongoDB的地址就指向本机了,另外,默认安装的MongoDB是没有密码的,可以随意访问。为了安全性起见,记得设置成需要用户名和密码访问的认证方式。
修改rails项目配置
我们已经装好了MongoDB,也给rails项目装好了mongoid的gem,搞完了配置文件,最后的一步,就是修改rails项目配置,让它能够通过mongoid访问MongoDB了。对于已经创建好的rails项目,默认是通过Active Record组件的,我们需要让它切换到Mongoid组件。
既然我们已经生成了mongoid.yml,那么,之前那个默认的database.yml配置文件已经没用了,别舍不得,去./config目录里面随手删掉它吧!
接下来,我们还需要做一些小改动,打开./config/application.rb,在文件开头的地方,去掉 require “rails/all”,然后加入下面几行:
1 | require "action_controller/railtie" |
对于rails 3.2以上版本,你还需要编辑文件./config/environments/development.rb,注释掉如下几行:
1 | #config.active_record.mass_assignment_sanitizer = :strict |
如果你的rails版本是3.2.3及以上,还需要在./config/application.rb注释掉下面一行:
1 | # config.active_record.whitelist_attributes = true |
以上的改动,都是针对现有已经创建的rails项目进行的,如果你想新建一个项目来使用Mongoid,那就简单多了,直接在创建项目的时候,让rails项目不使用Active Record即可:
1 | rails new my_application --skip-active-record |
这样简单多了啊!
总算搞完了,测试Mongoid和MongoDB,可以直接用rails命令创建一脚手架,添加数据即可,不出意外的话,你的项目已经用上Mongoid+MongoDB了!