Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rails Loves MongoDB

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for Bill Watts Bill Watts
November 21, 2013

Rails Loves MongoDB

Rails Loves MongoDB. A talk given on 11/21/2013 at the Erie Ruby group. Dives into MongoDB's capabilities and how to use it in a Rails application. This talk is also at http://www.slideshare.net/BillWatts/rails-loves-mongodb.

Avatar for Bill Watts

Bill Watts

November 21, 2013

Other Decks in Programming

Transcript

  1. MongoDB Is... Document database (NoSql) (1) Data is stored as

    BSON Objects (looks exactly like JSON) Gives high performance, high availability, and easy scalability Gives you ultimate flexibility with features like... Sweet Data Types: Hashes and Arrays Allows you to nest documents Allows for dynamic document attributes (1) Despite the word “NoSql” you can still create a relational database with MongoDB
  2. More MongoDB Knowledge Two types of relations: Embedded and Referenced

    No such thing as a “join”, this type of thing can be achieved with embedded documents and linking Has a built in aggregation framework and map reducing support. You still have 1-1, 1-n, n-n relations
  3. How Does Rails Talk To MongoDB? Mongoid - A Object-Document-

    Mapper(ODM) (1) (1) There are other ODM’s out there for MongoDB, MongoMapper for example. I feel Mongoid is far and away the best one. Has a supportive and active maintainer named Durran Jordan.
  4. Why Not Use ActiveRecord? ActiveRecord does not have built in

    support for MongoDB. Mongoid replaces it. However, it still uses ActiveModel. You still have all the validation goodness.
  5. Getting Started Install MongoDB...Kind of important Mac: 
 
 


    
 
 Windows:
 http:/ /docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/ Ubuntu:
 http:/ /docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
  6. Modify Your Gemfile Add the following to your gemfile, then

    bundle (1)(2) (1) Current public release of Mongoid doesn’t support Rails 4. To install Mongoid 4.0, point the gem to the Mongoid github project. ! (2) If your using Rails 3, use the public gem
  7. All Setup. What Kind of App Should We Make? Let’s

    build an app that helps you track video game achievements that you completed.
  8. What Models Do We Need To Create? system: name, short_name

    game: title, description, released_at, completed_at achievement: title, description, points, multiplayer, completed_at
  9. What The Model Looks Like By Default Clean model just

    includes Mongoid::Document to a class.
  10. Lets Add Some Fields In ActiveRecord you use migrations to

    add and remove fields from tables. In Mongoid you declare your fields right in the model class.
  11. Lets Review What We Just Did Generated our models Added

    the fields Added validation Made the relations
  12. Lets Review What We Just Did We created a system

    called “Xbox One”. We created a new game via our system document, automatically creating the relation to system. We created a new game, then created the relation to system. We can find documents by providing the document ID. Created a single and multiplayer achievement for a game. Took a look and how these are stored in the database. Updated one of the achievements as completed. Updated a document with a dynamic field.
  13. Some More Advanced Things You Can Do Custom Validation Methods

    Callbacks Scoping GeoNear Queries Map Reducing Aggregation Observers
  14. Some Resources MongoDB.org - More information about MongoDB RubyonRails.org -

    Read up on Rails 4 Mongoid.org - Documentation for Mongoid