mongoid_auto_increment 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +7 -7
- data/lib/mongoid_auto_increment.rb +2 -2
- data/lib/mongoid_auto_increment/incrementor.rb +16 -28
- data/mongoid_auto_increment.gemspec +5 -2
- data/spec/models/book.rb +7 -0
- data/spec/models/order.rb +7 -0
- data/spec/mongoid_auto_increment_spec.rb +36 -4
- data/spec/spec_helper.rb +33 -0
- metadata +21 -18
    
        data/Rakefile
    CHANGED
    
    | @@ -27,13 +27,13 @@ Jeweler::Tasks.new do |gem| | |
| 27 27 | 
             
            end
         | 
| 28 28 | 
             
            Jeweler::RubygemsDotOrgTasks.new
         | 
| 29 29 |  | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 30 | 
            +
            require 'rspec/core/rake_task'
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            RSpec::Core::RakeTask.new(:spec) do |spec|
         | 
| 33 | 
            +
              spec.pattern = 'spec/**/*_spec.rb'
         | 
| 34 | 
            +
            end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            task :default => :spec
         | 
| 37 37 |  | 
| 38 38 | 
             
            require 'rdoc/task'
         | 
| 39 39 | 
             
            RDoc::Task.new do |rdoc|
         | 
| @@ -7,9 +7,9 @@ module MongoidAutoIncrement | |
| 7 7 | 
             
                def auto_increment(name, options={})
         | 
| 8 8 | 
             
                  field name, :type => Integer
         | 
| 9 9 | 
             
                  seq_name = "#{self.name.downcase}_#{name}"
         | 
| 10 | 
            -
                  @@incrementor = MongoidAutoIncrement::Incrementor.new | 
| 10 | 
            +
                  @@incrementor = MongoidAutoIncrement::Incrementor.new unless defined? @@incrementor
         | 
| 11 11 |  | 
| 12 | 
            -
                  before_create { self.send("#{name}=", @@incrementor | 
| 12 | 
            +
                  before_create { self.send("#{name}=", @@incrementor.inc(seq_name, options)) }
         | 
| 13 13 | 
             
                end
         | 
| 14 14 | 
             
              end
         | 
| 15 15 | 
             
            end
         | 
| @@ -9,12 +9,17 @@ module MongoidAutoIncrement | |
| 9 9 | 
             
                    exists? || create(seed)
         | 
| 10 10 | 
             
                  end
         | 
| 11 11 |  | 
| 12 | 
            -
             | 
| 13 | 
            -
                     | 
| 14 | 
            -
             | 
| 12 | 
            +
                   def inc
         | 
| 13 | 
            +
                    opts = {
         | 
| 14 | 
            +
                      "query"  => query,
         | 
| 15 | 
            +
                      "update" => {"$inc" => { "number" => 1 }},
         | 
| 16 | 
            +
                      "new"    => true # return the modified document
         | 
| 17 | 
            +
                    }
         | 
| 18 | 
            +
                    collection.find_and_modify(opts)["number"]
         | 
| 19 | 
            +
                   end
         | 
| 15 20 |  | 
| 16 | 
            -
                  def  | 
| 17 | 
            -
                     | 
| 21 | 
            +
                  def current
         | 
| 22 | 
            +
                    collection.find_one(query)["number"]
         | 
| 18 23 | 
             
                  end
         | 
| 19 24 |  | 
| 20 25 | 
             
                  private
         | 
| @@ -23,7 +28,7 @@ module MongoidAutoIncrement | |
| 23 28 | 
             
                    collection.find(query).count > 0
         | 
| 24 29 | 
             
                  end
         | 
| 25 30 |  | 
| 26 | 
            -
                  def create(number | 
| 31 | 
            +
                  def create(number)
         | 
| 27 32 | 
             
                    collection.insert(query.merge({ "number" => number }))
         | 
| 28 33 | 
             
                  end
         | 
| 29 34 |  | 
| @@ -34,33 +39,16 @@ module MongoidAutoIncrement | |
| 34 39 | 
             
                  def query
         | 
| 35 40 | 
             
                    { "seq_name" => @sequence }
         | 
| 36 41 | 
             
                  end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                  def current
         | 
| 39 | 
            -
                    collection.find_one(query)["number"]
         | 
| 40 | 
            -
                  end
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                  def update_number_with(mongo_func)
         | 
| 43 | 
            -
                    opts = {
         | 
| 44 | 
            -
                      "query"  => query,
         | 
| 45 | 
            -
                      "update" => mongo_func,
         | 
| 46 | 
            -
                      "new"    => true # return the modified document
         | 
| 47 | 
            -
                    }
         | 
| 48 | 
            -
                    collection.find_and_modify(opts)["number"]
         | 
| 49 | 
            -
                  end
         | 
| 50 42 | 
             
                end
         | 
| 51 43 |  | 
| 52 44 | 
             
                def initialize(options=nil)
         | 
| 53 | 
            -
                  options ||= {}
         | 
| 54 | 
            -
                  @collection = options[:collection] || "sequences"
         | 
| 55 | 
            -
                  @seed = options[:seed].to_i
         | 
| 56 45 | 
             
                end
         | 
| 57 46 |  | 
| 58 | 
            -
                def  | 
| 59 | 
            -
                   | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
                  Sequence.new(sequence, @collection, @seed).set(number)
         | 
| 47 | 
            +
                def inc(sequence, options)
         | 
| 48 | 
            +
                  options ||= {}
         | 
| 49 | 
            +
                  collection = options[:collection] || "sequences"
         | 
| 50 | 
            +
                  seed = options[:seed].to_i
         | 
| 51 | 
            +
                  Sequence.new(sequence, collection, seed).inc
         | 
| 64 52 | 
             
                end
         | 
| 65 53 | 
             
              end
         | 
| 66 54 | 
             
            end
         | 
| @@ -5,7 +5,7 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{mongoid_auto_increment}
         | 
| 8 | 
            -
              s.version = "0.0. | 
| 8 | 
            +
              s.version = "0.0.8"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = [%q{Peter Savichev (proton)}]
         | 
| @@ -27,7 +27,10 @@ Gem::Specification.new do |s| | |
| 27 27 | 
             
                "lib/mongoid_auto_increment.rb",
         | 
| 28 28 | 
             
                "lib/mongoid_auto_increment/incrementor.rb",
         | 
| 29 29 | 
             
                "mongoid_auto_increment.gemspec",
         | 
| 30 | 
            -
                "spec/ | 
| 30 | 
            +
                "spec/models/book.rb",
         | 
| 31 | 
            +
                "spec/models/order.rb",
         | 
| 32 | 
            +
                "spec/mongoid_auto_increment_spec.rb",
         | 
| 33 | 
            +
                "spec/spec_helper.rb"
         | 
| 31 34 | 
             
              ]
         | 
| 32 35 | 
             
              s.homepage = %q{http://github.com/proton/mongoid_auto_increment}
         | 
| 33 36 | 
             
              s.licenses = [%q{MIT}]
         | 
    
        data/spec/models/book.rb
    ADDED
    
    
| @@ -1,5 +1,37 @@ | |
| 1 | 
            -
            require  | 
| 1 | 
            +
            require "spec_helper"
         | 
| 2 2 |  | 
| 3 | 
            -
            describe  | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 3 | 
            +
            describe "mongoid_auto_increment" do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              before(:each) do
         | 
| 6 | 
            +
                @book1 = Book.create :name => "The Rails Way"
         | 
| 7 | 
            +
                @book2 = Book.create :name => "The Ruby Programming Language "
         | 
| 8 | 
            +
                @book3 = Book.create :name => "Metaprogramming Ruby"
         | 
| 9 | 
            +
                @order1 = Order.create :name => "First Order"
         | 
| 10 | 
            +
                @order2 = Order.create :name => "Second Order"
         | 
| 11 | 
            +
                @order3 = Order.create :name => "Last Order"
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              it "should have id 1" do
         | 
| 15 | 
            +
                @book1.sequence.should eql 1
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              it "should have id 2" do
         | 
| 19 | 
            +
                @book2.sequence.should eql 2
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              it "should have id 3" do
         | 
| 23 | 
            +
                @book3.sequence.should eql 3
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              it "should have id 1001" do
         | 
| 27 | 
            +
                @order1.num.should eql 1001
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              it "should have id 1002" do
         | 
| 31 | 
            +
                @order2.num.should eql 1002
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              it "should have id 1003" do
         | 
| 35 | 
            +
                @order3.num.should eql 1003
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            $LOAD_PATH.unshift(File.dirname(__FILE__))
         | 
| 2 | 
            +
            $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            MODELS = File.join(File.dirname(__FILE__), "models")
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            require "rubygems"
         | 
| 7 | 
            +
            require "mongoid"
         | 
| 8 | 
            +
            require "mongoid_auto_increment"
         | 
| 9 | 
            +
            require "database_cleaner"
         | 
| 10 | 
            +
            require "simplecov"
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            SimpleCov.start
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            Dir["#{MODELS}/*.rb"].each { |f| require f }
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            Mongoid.config.master = Mongo::Connection.new.db("mongoid_auto_increment_test")
         | 
| 17 | 
            +
            Mongoid.logger = Logger.new($stdout)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            DatabaseCleaner.orm = "mongoid"
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            RSpec.configure do |config|
         | 
| 22 | 
            +
              config.before(:all) do
         | 
| 23 | 
            +
                DatabaseCleaner.strategy = :truncation
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              config.before(:each) do
         | 
| 27 | 
            +
                DatabaseCleaner.start
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              config.after(:each) do
         | 
| 31 | 
            +
                DatabaseCleaner.clean
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mongoid_auto_increment
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.8
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -13,7 +13,7 @@ date: 2011-08-03 00:00:00.000000000Z | |
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: bson_ext
         | 
| 16 | 
            -
              requirement: & | 
| 16 | 
            +
              requirement: &80637950 !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                none: false
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 19 | 
             
                - - ! '>='
         | 
| @@ -21,10 +21,10 @@ dependencies: | |
| 21 21 | 
             
                    version: '0'
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: * | 
| 24 | 
            +
              version_requirements: *80637950
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: mongoid
         | 
| 27 | 
            -
              requirement: & | 
| 27 | 
            +
              requirement: &80553960 !ruby/object:Gem::Requirement
         | 
| 28 28 | 
             
                none: false
         | 
| 29 29 | 
             
                requirements:
         | 
| 30 30 | 
             
                - - ! '>='
         | 
| @@ -32,10 +32,10 @@ dependencies: | |
| 32 32 | 
             
                    version: '0'
         | 
| 33 33 | 
             
              type: :runtime
         | 
| 34 34 | 
             
              prerelease: false
         | 
| 35 | 
            -
              version_requirements: * | 
| 35 | 
            +
              version_requirements: *80553960
         | 
| 36 36 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 37 | 
             
              name: bundler
         | 
| 38 | 
            -
              requirement: & | 
| 38 | 
            +
              requirement: &80553650 !ruby/object:Gem::Requirement
         | 
| 39 39 | 
             
                none: false
         | 
| 40 40 | 
             
                requirements:
         | 
| 41 41 | 
             
                - - ~>
         | 
| @@ -43,10 +43,10 @@ dependencies: | |
| 43 43 | 
             
                    version: 1.0.0
         | 
| 44 44 | 
             
              type: :development
         | 
| 45 45 | 
             
              prerelease: false
         | 
| 46 | 
            -
              version_requirements: * | 
| 46 | 
            +
              version_requirements: *80553650
         | 
| 47 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 48 | 
             
              name: jeweler
         | 
| 49 | 
            -
              requirement: & | 
| 49 | 
            +
              requirement: &80553270 !ruby/object:Gem::Requirement
         | 
| 50 50 | 
             
                none: false
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - ~>
         | 
| @@ -54,10 +54,10 @@ dependencies: | |
| 54 54 | 
             
                    version: 1.6.2
         | 
| 55 55 | 
             
              type: :development
         | 
| 56 56 | 
             
              prerelease: false
         | 
| 57 | 
            -
              version_requirements: * | 
| 57 | 
            +
              version_requirements: *80553270
         | 
| 58 58 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 59 59 | 
             
              name: simplecov
         | 
| 60 | 
            -
              requirement: & | 
| 60 | 
            +
              requirement: &80552910 !ruby/object:Gem::Requirement
         | 
| 61 61 | 
             
                none: false
         | 
| 62 62 | 
             
                requirements:
         | 
| 63 63 | 
             
                - - ! '>='
         | 
| @@ -65,10 +65,10 @@ dependencies: | |
| 65 65 | 
             
                    version: 0.4.0
         | 
| 66 66 | 
             
              type: :development
         | 
| 67 67 | 
             
              prerelease: false
         | 
| 68 | 
            -
              version_requirements: * | 
| 68 | 
            +
              version_requirements: *80552910
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: rdoc
         | 
| 71 | 
            -
              requirement: & | 
| 71 | 
            +
              requirement: &80552560 !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                none: false
         | 
| 73 73 | 
             
                requirements:
         | 
| 74 74 | 
             
                - - ! '>='
         | 
| @@ -76,10 +76,10 @@ dependencies: | |
| 76 76 | 
             
                    version: '0'
         | 
| 77 77 | 
             
              type: :development
         | 
| 78 78 | 
             
              prerelease: false
         | 
| 79 | 
            -
              version_requirements: * | 
| 79 | 
            +
              version_requirements: *80552560
         | 
| 80 80 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 81 81 | 
             
              name: rspec
         | 
| 82 | 
            -
              requirement: & | 
| 82 | 
            +
              requirement: &80552090 !ruby/object:Gem::Requirement
         | 
| 83 83 | 
             
                none: false
         | 
| 84 84 | 
             
                requirements:
         | 
| 85 85 | 
             
                - - ! '>='
         | 
| @@ -87,10 +87,10 @@ dependencies: | |
| 87 87 | 
             
                    version: 2.0.0
         | 
| 88 88 | 
             
              type: :development
         | 
| 89 89 | 
             
              prerelease: false
         | 
| 90 | 
            -
              version_requirements: * | 
| 90 | 
            +
              version_requirements: *80552090
         | 
| 91 91 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 92 92 | 
             
              name: database_cleaner
         | 
| 93 | 
            -
              requirement: & | 
| 93 | 
            +
              requirement: &80551790 !ruby/object:Gem::Requirement
         | 
| 94 94 | 
             
                none: false
         | 
| 95 95 | 
             
                requirements:
         | 
| 96 96 | 
             
                - - ! '>='
         | 
| @@ -98,7 +98,7 @@ dependencies: | |
| 98 98 | 
             
                    version: '0'
         | 
| 99 99 | 
             
              type: :development
         | 
| 100 100 | 
             
              prerelease: false
         | 
| 101 | 
            -
              version_requirements: * | 
| 101 | 
            +
              version_requirements: *80551790
         | 
| 102 102 | 
             
            description: Add SQL like auto-incrementing fields to your Mongoid documents.
         | 
| 103 103 | 
             
            email: psavichev@gmail.com
         | 
| 104 104 | 
             
            executables: []
         | 
| @@ -117,7 +117,10 @@ files: | |
| 117 117 | 
             
            - lib/mongoid_auto_increment.rb
         | 
| 118 118 | 
             
            - lib/mongoid_auto_increment/incrementor.rb
         | 
| 119 119 | 
             
            - mongoid_auto_increment.gemspec
         | 
| 120 | 
            +
            - spec/models/book.rb
         | 
| 121 | 
            +
            - spec/models/order.rb
         | 
| 120 122 | 
             
            - spec/mongoid_auto_increment_spec.rb
         | 
| 123 | 
            +
            - spec/spec_helper.rb
         | 
| 121 124 | 
             
            - TODO
         | 
| 122 125 | 
             
            homepage: http://github.com/proton/mongoid_auto_increment
         | 
| 123 126 | 
             
            licenses:
         | 
| @@ -134,7 +137,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 134 137 | 
             
                  version: '0'
         | 
| 135 138 | 
             
                  segments:
         | 
| 136 139 | 
             
                  - 0
         | 
| 137 | 
            -
                  hash:  | 
| 140 | 
            +
                  hash: 1041976307
         | 
| 138 141 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 139 142 | 
             
              none: false
         | 
| 140 143 | 
             
              requirements:
         |