Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sfeu/dm-redis-adapter
A DataMapper adapter for redis
https://github.com/sfeu/dm-redis-adapter
Last synced: 3 months ago
JSON representation
A DataMapper adapter for redis
- Host: GitHub
- URL: https://github.com/sfeu/dm-redis-adapter
- Owner: sfeu
- License: mit
- Fork: true (whoahbot/dm-redis-adapter)
- Created: 2012-01-31T17:40:45.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2012-11-20T17:43:01.000Z (almost 12 years ago)
- Last Synced: 2024-02-12T17:06:47.452Z (9 months ago)
- Language: Ruby
- Homepage: http://whoahbot.com
- Size: 234 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.textile
- License: MIT-LICENSE
Awesome Lists containing this project
README
h1. dm-redis-adapter
This is a DataMapper adapter for the Redis key-value store.
Redis is a very fast key-value store with some interesting data structures added, and oh so much more. You can have a key that is a SET, LIST, STRING or HASH that is binary safe. Data structures like SET and LIST allow for even more interesting things. Redis is a fabulous and fast engine for data structures, and you can read more about it here: redis. Redis is also a persistent data store, and can be used in large-scale environments with master-slave replication and consistent hashing on the client side. Redis makes everyone happy and has been known to cause sunshine to spontaneously break out in clouded areas.
DataMapper is a brilliant ORM that is based on the IdentityMap pattern. Usage of DataMapper resembles that of ActiveRecord, the popular ORM bundled with Ruby on Rails, but with some very important differences. A quote from the DM wiki: "One row in the database should equal one object reference. Pretty simple idea. Pretty profound impact." Having an identity map allows for very efficient queries to the database, as well as interesting forms of lazy loading of attributes or associations.
Marrying DataMapper to Redis allows for schema-less models, you can add fields at any time without having to create a migration. DataMapper also allows us to store non-native Redis types in the db, like Date fields.
h1. Changelog
* v0.4.0 Support for dm-core v1.1.0
* v0.3.0 Updates to support ruby 1.9.2 (thanks arbarlow!)
* v0.2.1 Fixes to sorting
* v0.1.1 Update to redis-rb v2.0.0
* v0.1 Update to store records as redis hash values
* v0.0.11 Updates to support newer versions of the redis client, support for JSON datatypesh1. Install
Prerequisites:
* Redis:
** Redis, v2.2 seriesInstall the dm-redis adapter:
> gem install dm-redis-adapter
h1. Usage
Setup your adapter, define your models and properties:
require 'rubygems'
require 'dm-core'
require 'dm-redis-adapter'DataMapper.setup(:default, {:adapter => "redis"})
class Cafe
include DataMapper::Resourceproperty :id, Serial
property :name, Text
endCafe.finalize
Cafe.create(:name => "Whoahbot's Caffienitorium")
Now you can use redis in a ORM style, and take advantage of all of the amazing things that DataMapper offers.
If you want to do finds on specific String fields, add an index:
class Coffee
include DataMapper::Resourceproperty :id, Serial
property :description, String, :index => true
endCoffee.create(:description => "Notes of crude oil and sulphur")
Coffee.first(:description => "Notes of crude oil and sulphur") # will now work
Validations on unique fields are now supported through indices and dm-validations:
class Crumblecake
include DataMapper::Resource
validates_is_unique :flavorproperty :id, Serial
property :flavor, String, :index => true
endCrumblecake.create(:flavor => "snozzbler")
Crumblecake.new(:flavor => "snozzbler").valid? # false (of course! Who ever heard of a snozzbler crumblecake?)
h1. Badass contributors
* Anthony Eden (aeden) Gem cleanup, update to jeweler
* Simon Roset (sr) Fixes for edge dm-core
* Chris Hoffman (cehoffman) Fixes for Ruby 1.9, bundler for development deps, fixes for sorting
* brian p o'rourke (bpo) Updates for newer versions of redis client and DM JSON type support, move to hash storage
* Alex Barlow (arbarlow) Fixes for ruby 1.9.2