rails 4.0.2 + mongoid 对mongodb进行增删改查
rails new mongoid_app --skip-active-record --skip-test-unit --skip-bundlecreate
createREADME.rdoc
createRakefile
createconfig.ru
create.gitignore
createGemfile
createapp
createapp/assets/javascripts/application.js
createapp/assets/stylesheets/application.css
createapp/controllers/application_controller.rb
createapp/helpers/application_helper.rb
createapp/views/layouts/application.html.erb
createapp/assets/images/.keep
createapp/mailers/.keep
createapp/models/.keep
createapp/controllers/concerns/.keep
createapp/models/concerns/.keep
createbin
createbin/bundle
createbin/rails
createbin/rake
createconfig
createconfig/routes.rb
createconfig/application.rb
createconfig/environment.rb
createconfig/environments
createconfig/environments/development.rb
createconfig/environments/production.rb
createconfig/environments/test.rb
createconfig/initializers
createconfig/initializers/backtrace_silencers.rb
createconfig/initializers/filter_parameter_logging.rb
createconfig/initializers/inflections.rb
createconfig/initializers/mime_types.rb
createconfig/initializers/secret_token.rb
createconfig/initializers/session_store.rb
createconfig/initializers/wrap_parameters.rb
createconfig/locales
createconfig/locales/en.yml
createconfig/boot.rb
createdb
createdb/seeds.rb
createlib
createlib/tasks
createlib/tasks/.keep
createlib/assets
createlib/assets/.keep
createlog
createlog/.keep
createpublic
createpublic/404.html
createpublic/422.html
createpublic/500.html
createpublic/favicon.ico
createpublic/robots.txt
createtmp/cache
createtmp/cache/assets
createvendor/assets/javascripts
createvendor/assets/javascripts/.keep
createvendor/assets/stylesheets
createvendor/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 stylesheetsgem '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 dogem 'sdoc', require: falseend
运行bundle install
bundle installUpdating git://github.com/mongoid/mongoid.gitFetching 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 ` to see where a bundled gem is installed.
生成mongoid数据库配置文件
rails generate mongoid:config createconfig/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 array10 # of host:port pairs. (required)11 hosts:12 - localhost:2701713 options:14 # Change the default write concern. (default = { w: 1 })15 # write:16 # w: 117 18 # Change the default consistency model to primary, secondary.19 # 'secondary' will send reads to secondaries, 'primary' sends everything20 # to master. (default: primary)21 # read: secondary_preferred22 23 # How many times Moped should attempt to retry an operation after24 # failure. (default: 30)25 # max_retries: 3026 27 # The time in seconds that Moped should wait before retrying an28 # operation on failure. (default: 1)29 # retry_interval: 130 # Configure Mongoid specific options. (optional)31 options:32 # Enable the identity map, needed for eager loading. (default: false)33 # identity_map_enabled: false34 35 # Includes the root model name in json serialization. (default: false)36 # include_root_in_json: false37 38 # Include the _type field in serializaion. (default: false)39 # include_type_for_serialization: false40 41 # Preload all models in development, needed when models use42 # inheritance. (default: false)43 # preload_models: false44 45 # Protect id and type from mass assignment. (default: true)46 # protect_sensitive_fields: true47 48 # Raise an error when performing a #find and the document is not found.49 # (default: true)50 # raise_not_found_error: true51 52 # Raise an error when defining a scope with the same name as an53 # existing method. (default: false)54 # scope_overwrite_exception: false55 56 # Use Active Support's time zone in conversions. (default: true)57 # use_activesupport_time_zone: true58 59 # Ensure all times are UTC in the app side. (default: false)60 # use_utc: false61 test:62 sessions:63 default:64 database: mongoid_app_test65 hosts:66 - localhost:2701767 options:68 read: primary69 # In the test environment we lower the retries and retry interval to70 # low amounts for fast failures.71 max_retries: 172 retry_interval: 0
使用scaffold脚手架生成测试程序
rails generate scaffold User name:string email:string invokemongoid create app/models/user.rb invokeresource_route route resources :users invokescaffold_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 invokeassets invoke coffee create app/assets/javascripts/users.js.coffee invoke scss create app/assets/stylesheets/users.css.scss invokescss create app/assets/stylesheets/scaffolds.css.scss
顺便也贴一下生成的model文件 user.rb
1 class User2 include Mongoid::Document3 field :name, type: String4 field :email, type: String5 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 INFOWEBrick 1.3.1 INFOruby 2.0.0 (2013-06-27) INFOWEBrick::HTTPServer#start: pid=9442 port=3000
访问地址http://localhost:3000/users 并添加一条数据
运行mongo查看数据是否添加成功
mongoMongoDB shell version: 2.4.6connecting to: test> show dbsmongoid_app_development 0.203125GBtest (empty)> use mongoid_app_developmentswitched to db mongoid_app_development> show collectionssystem.indexesusers> db.users.find(){ "_id" : ObjectId("52c1330a75627524e2000000"), "name" : "grj", "email" : "grj@example.com" }> exitbye
页:
[1]