No commit activity in last 3 years
No release in over 3 years
Mongoid::Sequence2 gives you the ability to specify fields to behave like a sequence number (exactly like the "id" column in conventional SQL flavors).
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

<= 4.2, >= 3.0.0
<= 3.1, >= 3.0.0
 Project Readme

Mongoid Sequence

Mongoid Sequence allows you to specify fields to behave like a sequence number (exactly like the "id" column in conventional SQL flavors).

Credits

This gem was inspired by a couple of gists by masatomo and ShogunPanda.

and

https://github.com/agile42/mongoid_sequence2/ from francis

Usage

setup

since v0.2.3 you can specific custom default storage options for Mongoid::Sequences, eg:

#config/initializers/sequence2.rb
Mongoid::Sequence2.setup do |config|
 config.collection_name = :__sequences
 config.session = :default
end

Include Mongoid::Sequence in your class and call sequence(:field).

Like this:

class Sequenced
	include Mongoid::Document
	include Mongoid::Sequence

	field :my_sequence, :type => Integer
	sequence :my_sequence
end

s1 = Sequenced.create
s1.sequence #=> 1

s2 = Sequenced.create
s2.sequence #=> 2 # and so on

It's also possible to make the id field behave like this:

class Sequenced
	include Mongoid::Document
	include Mongoid::Sequence

	sequence :_id
end

s1 = Sequenced.create
s1.id #=> 1

s2 = Sequenced.create
s2.id #=> 2 # and so on

You can also have any per model sequence without need to create given model's objects:

class Sequenced
	include Mongoid::Document
	include Mongoid::Sequence
end

Sequenced.next_sequence('some_name_1') #=> 1
Sequenced.next_sequence('some_name_1') #=> 2
Sequenced.next_sequence('some_name_2') #=> 1
# can also give an special step
Sequenced.next_sequence('some_name_2', 2) #=> 3

notice:

for v0.2.5, step should only work with no auto_increment field, more info check test/reference_test.rb

Consistency

Mongoid::Sequence uses the atomic findAndModify command, so you shouldn't have to worry about the sequence's consistency.

Installation

Just add it to your projects' Gemfile:

gem "mongoid-sequence2"

Thanks

thanks masatomo, goncalossilva, agile42


Copyright © 2010 Gonçalo Silva, released under the MIT license