SkillAgentSearch skills...

Mince

Lightweight database ORM for Ruby - Supports multiple databases

Install / Use

/learn @coffeencoke/Mince
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

What is Mince

Travis CI

Mince is a ruby gem to provide a light weight ORM to persist data to a variety of databases in ruby apps.

The motivation behind this is so your application is not tightly tied to a specific database. As your application grows you may need to upgrade to a different database or pull specific models to a different persistence strategy.

Other ORMs are married to the Active Record Architecture Pattern. Although Mince can be used with the Active Record pattern as well, it is designed to be used in more of a Multitier Architecture Pattern, where the data layer is separated from the business logic layer in the application.

View the Why Multitier Architecture? page for more discussion

Language Dependency

Currently only compatible with Ruby 1.9+. Support for Ruby 1.8 to come later.

How to use it

This library contains the core components to use Mince supported database interfaces. These interfaces can be interchanged, but in this setup example we will be using HashyDb, which is an in-memory ruby hash database.

Install

Install mince and hashy_db gems:

gem install mince hashy_db

Config

Use the config class to configure which mince database interface you desire to use:

require 'mince'
require 'hashy_db'

Mince::Config.interface = Mince::HashyDb::Interface

Use it

# Get the interface
interface = Mince::Config.interface

# Add a book
interface.add 'books', title: 'The World In Photographs', publisher: 'National Geographic'

# Get all books
interface.find_all 'books'

# Replace a book where the record's id is 1
# Use the interface's primary_key field because
# some databases use non `id` fields for the primary key
primary_key = interface.primary_key
interface.replace 'books', primary_key => 1, title: 'A World In Photographs', publisher: 'National Geographic'

Deeper Look

The following pages provide a deeper look into Mince

Link | Description ----|----- API Docs | API docs for Mince Existing Interfaces | List of supported database interfaces that can be used with Mince Mince Migrator | Database migrations library for Mince Usage with Rails | More information on how to use Mince with Rails Fancy Mixins | We've written a few mixins that provide some standard behavior to your models while using Mince Development | Help by contributing Mailing List | Mailing list for Mince Travis CI | Check out the build status of Mince Why Multitier Architecture? | Discussion about why to use multi tier architecture as apposed to others, such as Active Record

Contribute

You can contribute to Mince by doing a number of things. View the Development page for more details.

Contributors

Name | Twitter | Github -----|----|----- Matt Simpson (owner & maintainer) | @railsgrammer | @coffeencoke Jason Mayer | @farkerhaiku | @farkerhaiku Amos King | @adkron | @adkron Ionic Mobile Team | @asynchrony | @ionicmobile David Czarnecki | @czarneckid | @czarneckid Kenny Ortmann | @yairgo | @yairgo Helena Converse | @n3rdgir1 | @n3rdgir1

If you've been missed on this list, let us know by creating an issue or sending one of us a message.

License

Copyright 2013 Matt Simpson

MIT - view LICENSE.txt in the source for details

Version 1

Looking for support for Version 1? Put an issue in, or send one of us a message.

View on GitHub
GitHub Stars8
CategoryData
Updated8y ago
Forks2

Languages

Ruby

Security Score

70/100

Audited on Nov 17, 2017

No findings