要维护一个项目,但是这个项目是rails+mongodb的,之前用惯了mysql,突然换成mongodb,不是很习惯,而且关于这块的资料好少。
自己折腾了下,总结过程如下:
安装
1 | Brew install mongodb |
然后1
which mongo
来找到mongo的安装路径
添加环境变量:
1 | vi .bahs_profile |
然后启动mongo 服务:
1 | mongod --config /usr/local/etc/mongod.conf |
敲上mongo就可以操作数据库了
与rails结合
在Gemfile中添加:
1 | source 'https://ruby.taobao.org' |
然后
1 | bundle install |
再执行:
1 | rails g mongoid:config |
将会出现:1
This generates config/mongoid.yml
那么,之前那个默认的database.yml配置文件已经没用了,别舍不得,去./config目录里面随手删掉它吧!
修改config/application.rb文件,先删掉1
require "rails/all"
和1
config.active_record.raise_in_transactional_callbacks = true
这两行,再添加以下几行:
1 | require "action_controller/railtie" |
修改config/environments/development.rb文件,将里面所有涉及到active_record的配置项都注释掉:
1 | config.active_record.migration_error = :page_load |
在config/initializers/目录下新建一个mongoid.rb文件,添加一行:1
Mongoid.load!("config/mongoid.yml", :production)
使用
经过上面的配置,就可以开始使用了,现在请忘记rake db:migrate命令吧,需要添加修改字段只要修改对应的model文件即可。1
2
3
4
5class Person
include Mongoid::Document
field :first_name, type: String
field :last_name, type: String
end
就ok了
相关Gems
• 如果觉得mongode生成的objectid在url中显示不够美观的话,那么可以安装mongoid_auto_increment_id来生成自增的整数形id。
• 使用mongoid-rails可以防止query的注入
• 因为在替换成mongoid之后,默认的migratetion就已经不能用来了,所以可以用mongoid_rails_migrations来实现针对mongodb的数据迁移功能。