Sha256: 7e33336cf856e3444e42fcc4bbbfad96373429dc11ef02b4b4b5e68930c81969

Contents?: true

Size: 1.87 KB

Versions: 7

Compression:

Stored size: 1.87 KB

Contents

ohm-sorted
==========

[![Gem Version](https://badge.fury.io/rb/ohm-sorted.png)](http://badge.fury.io/rb/ohm-sorted)
[![Build Status](https://travis-ci.org/educabilia/ohm-sorted.png?branch=master)](https://travis-ci.org/educabilia/ohm-sorted)
[![Code Climate](https://codeclimate.com/github/educabilia/ohm-sorted.png)](https://codeclimate.com/github/educabilia/ohm-sorted)

Sorted indices for Ohm


Setup
-----

1. Include the `Callbacks` and `Sorted` modules in your model:

		include Ohm::Callbacks 
		include Ohm::Sorted

2. Add the sorted indices you want to your model:

  - If you want a complete index:

        sorted :created_at

  - If you want to partition the index based on an attribute:

        sorted :created_at, :group_by => :site_id


You can use both indices for the same attribute, as the partition keys are
namespaced by the `group_by` attribute.

You will need to resave every model if they already exist for the index to get
built.

The ranking attribute must be of a type that responds to `to_f`.


Usage
-----

To query the sorted index, use the `sorted_find` class method.

    >> Post.sorted_find(:created_at, site_id: "ar")

This returns an `Ohm::SortedSet`, similiar to an `Ohm::Set` but backed by a sorted
set.

To limit the results to a certain score range, use the `between` method.
This and the following methods return a new copy of the set object, but data
is not read until it is necessary.

    >> Post.sorted_find(:created_at, site_id: "ar").between(start_time, end_time)

To take a slice of the results, use the `slice` method. This returns a new copy
of the set which will pass its `offset` and `count` parameters to Redis.

    >> Post.sorted_find(:created_at, site_id: "ar").slice(2, 4)


Requirements
------------

This plugin works with Ohm versions higher than 0.1.3.


Acknowledgements
----------------

Many thanks to Damian Janowski (https://github.com/djanowski)

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ohm-sorted-0.4.1 README.md
ohm-sorted-0.4.0 README.md
ohm-sorted-0.3.4 README.md
ohm-sorted-0.3.3 README.md
ohm-sorted-0.3.2 README.md
ohm-sorted-0.3.1 README.md
ohm-sorted-0.3.0 README.md