View on GitHub


Helping Ruby developers and their companies, unlock their key-value store data, through associative and sequential based access, providing unprecedented support for map reduce behaviors, native to the Ruby language.

Download this project as a .zip file Download this project as a tar.gz file

Welcome to the Ruby Keymap Project

The purpose of the project is to provide seamless Ruby support for list-based and hash-based collections stored in various backing stores, such as Riak, Redis, etc. Acknowledging that SQL is only one possible backing store for enterprise information, users should take note of the similarity in look and feel to ActiveRecord in some regards, but in other regards the API pays particular emphasis on map-reduce like behaviors intrinsic to Ruby, over any emphasis on SQL per se. As such, the solution is not bound to SQL semantics, whereas ActiveRecord targets SQL.


Keymap turned 500 today, with over 61 downloads from within the first few hours of the new release!


Documentation for keymap is provided here, and was generated from Ruby RDoc.

Contributors Wanted

I am looking for co-contributors to round out the API and tests. If you have interest in helping please let me know. Here are some things that I would contributions for and help with:

      Connection Adapters:
    • Add connection adapter for Riak
    • Add connection adapter for CouchDB
    • Add connection adapter for MongoDB
    • Add connection adapter for Cassandra
    • Add connection adapter for Hadoop
    • Add support for a persistence DSL for Ruby objects and classes

I am looking for feedback as to what features folks would like to see first, noted examples above.

Recent Updates

We cleaned up the release process, support generating rDoc, added documentation, and fixed a small defect or two.

We now have support for Ruby hashes! Like the support for arrays (lists), the hash integration supports a vast subset of the Hash API as well as Enumerable. Unlike lists, as described below, performing an each operation will pull all the keys into memory. That should be a design consideration for users dealing with massive datasets.

This week enumerable-based list support is available and fully tested. This allows Ruby developers to access and iterate over their key-value store data the same way they perform map, collect, inject operations over Ruby arrays. And what's more, data is read incrementally so that you don't blow your address space when reducing or summarizing larger dataset sizes.

Authors and Contributors

Robert Buck (@rbuck).

Continuous Integration and Code Health

We have added support for continuous integration and the build status is available from Travis-CI and available from Circle-CI.

CodeClimate provides our static analysis quality metrics.

Support or Contact

Having trouble with Keymap? Please file issues at or contact me through email or by twitter (@ysoitenly) and I’ll help you sort it out. If you would like to talk with us or post questions, a web forum is also available.