Rails和MongoDB的笔记
首先
最近我在Google Cloud Storage上进行了验证,但由于某些基础设施要求的出现,所以决定尝试使用其他NoSQL数据库来实现。
这次我会用Rails + MongoDB来构建一个简单的应用程序,从安装到构建的过程作为备忘录记录下来。
将MongoDB安装在Ubuntu上。
安装
$cat /etc/lsb-release
>DISTRIB_ID=Ubuntu
>DISTRIB_RELEASE=14.04
$ sudo apt-get install ntp
$ sudo apt-get install mongodb
$ mongo -version
>MongoDB shell version: 2.4.9
开放端口
sudo ufw status
sudo ufw allow 27017 <-Mongodbで使う
sudo ufw allow 27018 <-Mongodbのwebconsoleで使う
sudo ufw allow 28017 <-Mongodbのwebconsoleで使う
//許可ポート以外閉じる
sudo ufw default deny
允许MongoDB的外部IP访问
$ vim /etc/mongodb.conf
//コメントアウトする
#bind_ip = 127.0.0.1
#port = 27017
bind_ip = All
//Webインターフェースを有効化
# Disable the HTTP interface (Defaults to localhost:27018).
#nohttpinterface = true
nohttpinterface = false
启动数据库
$ sudo service mongodb start
or
$ sudo service mongodb restart
连接到Web控制台。
http://[IP]:28017
创建Rails环境
创建rails模板
$ rails -v
>Rails 5.1.4
$ mkdir rails-mongo-demo
$ cd rails-mongo-demo/
$ rails new rails-mongo-demo --skip-active-record
$ cd rails-mongo-demo/
在GemFile中添加内容。
gem 'mongoid'
安装捆绑包
bundle install
创建config
$ bundle exec rails g mongoid:config
mongoid.ymlにhostsを設定する>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
development:
clients:
default:
hosts:
- 192.168.0.1:27017
使用脚手架创建一个Cat。
$ bundle exec rails generate scaffold Cat name:string age:integer
一时设置CSRF
class ApplicationController < ActionController::Base
#protect_from_forgery with: :exception
protect_from_forgery with: :null_session
end
または
class CatsController < ApplicationController
protect_from_forgery :except => [:create]
我试着发帖
curl -d 'cat[name]=abcdefg&cat[age]=11' http://localhost:3000/cats
---------------------------------------------
#mongoに接続
$ mongo
> show dbs
rails_mongo_demo_development 0.203125GB
> use rails_mongo_demo_development
> show collections
cats
//インデックス
db.rails_mongo_demo_development.getIndexes();
//全部削除
db.cats.remove();
//データ取得 find_all的な
db.cats.find()
//データ取得 find_by的な
db.cats.find({"name":"Reon"})
---------------------------------------------