rails 4.0.2 + mongoid 对mongodb进行增删改查

新建项目

rails new mongoid_app --skip-active-record --skip-test-unit --skip-bundle
      create  
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/views/layouts/application.html.erb
      create  app/assets/images/.keep
      create  app/mailers/.keep
      create  app/models/.keep
      create  app/controllers/concerns/.keep
      create  app/models/concerns/.keep
      create  bin
      create  bin/bundle
      create  bin/rails
      create  bin/rake
      create  config
      create  config/routes.rb
      create  config/application.rb
      create  config/environment.rb
      create  config/environments
      create  config/environments/development.rb
      create  config/environments/production.rb
      create  config/environments/test.rb
      create  config/initializers
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/filter_parameter_logging.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/secret_token.rb
      create  config/initializers/session_store.rb
      create  config/initializers/wrap_parameters.rb
      create  config/locales
      create  config/locales/en.yml
      create  config/boot.rb
      create  db
      create  db/seeds.rb
      create  lib
      create  lib/tasks
      create  lib/tasks/.keep
      create  lib/assets
      create  lib/assets/.keep
      create  log
      create  log/.keep
      create  public
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/favicon.ico
      create  public/robots.txt
      create  tmp/cache
      create  tmp/cache/assets
      create  vendor/assets/javascripts
      create  vendor/assets/javascripts/.keep
      create  vendor/assets/stylesheets
      create  vendor/assets/stylesheets/.keep

修改Gemfile

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.2'
gem 'bson_ext'
gem 'mongo'
gem 'mongoid', github: 'mongoid/mongoid'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
group :doc do
  gem 'sdoc', require: false
end

运行bundle install

bundle install
Updating git://github.com/mongoid/mongoid.git
Fetching gem metadata from https://rubygems.org/...........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Using rake (10.1.1)
Using i18n (0.6.9)
Using minitest (4.7.5)
Using multi_json (1.8.2)
Using atomic (1.1.14)
Using thread_safe (0.1.3)
Using tzinfo (0.3.38)
Using activesupport (4.0.2)
Using builder (3.1.4)
Using erubis (2.7.0)
Using rack (1.5.2)
Using rack-test (0.6.2)
Using actionpack (4.0.2)
Using mime-types (1.25.1)
Using polyglot (0.3.3)
Using treetop (1.4.15)
Using mail (2.5.4)
Using actionmailer (4.0.2)
Using activemodel (4.0.2)
Using activerecord-deprecated_finders (1.0.3)
Using arel (4.0.1)
Using activerecord (4.0.2)
Using bson (2.0.0)
Using bson_ext (1.5.1)
Using bundler (1.5.1)
Using coffee-script-source (1.6.3)
Using execjs (2.0.2)
Using coffee-script (2.2.0)
Using thor (0.18.1)
Using railties (4.0.2)
Using coffee-rails (4.0.1)
Using connection_pool (1.2.0)
Using hike (1.2.3)
Using jbuilder (1.5.3)
Using jquery-rails (3.0.4)
Using json (1.8.1)
Using mongo (1.3.1)
Using optionable (0.2.0)
Using moped (2.0.0.beta4)
Using origin (2.0.0)
Using mongoid (4.0.0.alpha1) from git://github.com/mongoid/mongoid.git (at master)
Using tilt (1.4.1)
Using sprockets (2.10.1)
Using sprockets-rails (2.0.1)
Using rails (4.0.2)
Using rdoc (3.12.2)
Using sass (3.2.13)
Using sass-rails (4.0.1)
Using sdoc (0.3.20)
Using turbolinks (2.1.0)
Using uglifier (2.4.0)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

生成mongoid数据库配置文件

rails generate mongoid:config
      create  config/mongoid.yml

在这里不对mongoid.yml进行任何更改(假设已安装MongoDB并以默认设置启动),顺便贴一下生成的mongoid.yml 的文件内容

 1 development:
 2   # Configure available database sessions. (required)
 3   sessions:
 4     # Defines the default session. (required)
 5     default:
 6       # Defines the name of the default database that Mongoid can connect to.
 7       # (required).
 8       database: mongoid_app_development
 9       # Provides the hosts the default session can connect to. Must be an array
10       # of host:port pairs. (required)
11       hosts:
12         - localhost:27017
13       options:
14         # Change the default write concern. (default = { w: 1 })
15         # write:
16         # w: 1
17 
18         # Change the default consistency model to primary, secondary.
19         # 'secondary' will send reads to secondaries, 'primary' sends everything
20         # to master. (default: primary)
21         # read: secondary_preferred
22 
23         # How many times Moped should attempt to retry an operation after
24         # failure. (default: 30)
25         # max_retries: 30
26 
27         # The time in seconds that Moped should wait before retrying an
28         # operation on failure. (default: 1)
29         # retry_interval: 1
30   # Configure Mongoid specific options. (optional)
31   options:
32     # Enable the identity map, needed for eager loading. (default: false)
33     # identity_map_enabled: false
34 
35     # Includes the root model name in json serialization. (default: false)
36     # include_root_in_json: false
37 
38     # Include the _type field in serializaion. (default: false)
39     # include_type_for_serialization: false
40 
41     # Preload all models in development, needed when models use
42     # inheritance. (default: false)
43     # preload_models: false
44 
45     # Protect id and type from mass assignment. (default: true)
46     # protect_sensitive_fields: true
47 
48     # Raise an error when performing a #find and the document is not found.
49     # (default: true)
50     # raise_not_found_error: true
51 
52     # Raise an error when defining a scope with the same name as an
53     # existing method. (default: false)
54     # scope_overwrite_exception: false
55 
56     # Use Active Support's time zone in conversions. (default: true)
57     # use_activesupport_time_zone: true
58 
59     # Ensure all times are UTC in the app side. (default: false)
60     # use_utc: false
61 test:
62   sessions:
63     default:
64       database: mongoid_app_test
65       hosts:
66         - localhost:27017
67       options:
68         read: primary
69         # In the test environment we lower the retries and retry interval to
70         # low amounts for fast failures.
71         max_retries: 1
72         retry_interval: 0

使用scaffold脚手架生成测试程序

rails generate scaffold User name:string email:string
      invoke  mongoid
      create    app/models/user.rb
      invoke  resource_route
       route    resources :users
      invoke  scaffold_controller
      create    app/controllers/users_controller.rb
      invoke    erb
      create      app/views/users
      create      app/views/users/index.html.erb
      create      app/views/users/edit.html.erb
      create      app/views/users/show.html.erb
      create      app/views/users/new.html.erb
      create      app/views/users/_form.html.erb
      invoke    helper
      create      app/helpers/users_helper.rb
      invoke    jbuilder
      create      app/views/users/index.json.jbuilder
      create      app/views/users/show.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/users.js.coffee
      invoke    scss
      create      app/assets/stylesheets/users.css.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.css.scss

顺便也贴一下生成的model文件 user.rb

1 class User
2   include Mongoid::Document
3   field :name, type: String
4   field :email, type: String
5 end
运行测试服务器
rails server
=> Booting WEBrick
=> Rails 4.0.2 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2013-12-30 16:46:00] INFO  WEBrick 1.3.1
[2013-12-30 16:46:00] INFO  ruby 2.0.0 (2013-06-27) [x86_64-linux]
[2013-12-30 16:46:00] INFO  WEBrick::HTTPServer#start: pid=9442 port=3000

访问地址http://localhost:3000/users 并添加一条数据

运行mongo查看数据是否添加成功

mongo
MongoDB shell version: 2.4.6
connecting to: test
> show dbs
mongoid_app_development    0.203125GB
test    (empty)
> use mongoid_app_development
switched to db mongoid_app_development
> show collections
system.indexes
users
> db.users.find()
{ "_id" : ObjectId("52c1330a75627524e2000000"), "name" : "grj", "email" : "grj@example.com" }
> exit
bye

 下载: mongoid_app.rar

posted @ 2013-12-30 16:53  nil  阅读(1405)  评论(0编辑  收藏  举报