uorm 0.0.1 → 0.0.2
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/Gemfile.lock +15 -0
- data/lib/uorm/redis/persistance.rb +46 -0
- data/lib/uorm/redis.rb +27 -0
- data/lib/uorm/type.rb +2 -0
- data/lib/uorm/version.rb +1 -1
- data/lib/uorm.rb +9 -1
- data/spec/{urm_spec.rb → em-mongo_spec.rb} +34 -45
- data/spec/redis_synchrony_spec.rb +112 -0
- data/spec/spec_helper.rb +1 -8
- data/uorm.gemspec +7 -3
- metadata +72 -4
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -15,6 +15,14 @@ GEM | |
| 15 15 | 
             
                  activesupport
         | 
| 16 16 | 
             
                bson_ext (1.8.0)
         | 
| 17 17 | 
             
                  bson (~> 1.8.0)
         | 
| 18 | 
            +
                columnize (0.3.6)
         | 
| 19 | 
            +
                debugger (1.2.3)
         | 
| 20 | 
            +
                  columnize (>= 0.3.1)
         | 
| 21 | 
            +
                  debugger-linecache (~> 1.1.1)
         | 
| 22 | 
            +
                  debugger-ruby_core_source (~> 1.1.5)
         | 
| 23 | 
            +
                debugger-linecache (1.1.2)
         | 
| 24 | 
            +
                  debugger-ruby_core_source (>= 1.1.1)
         | 
| 25 | 
            +
                debugger-ruby_core_source (1.1.6)
         | 
| 18 26 | 
             
                diff-lcs (1.1.3)
         | 
| 19 27 | 
             
                em-mongo (0.4.3)
         | 
| 20 28 | 
             
                  bson (>= 1.1.3)
         | 
| @@ -22,8 +30,11 @@ GEM | |
| 22 30 | 
             
                em-synchrony (1.0.2)
         | 
| 23 31 | 
             
                  eventmachine (>= 1.0.0.beta.1)
         | 
| 24 32 | 
             
                eventmachine (1.0.0)
         | 
| 33 | 
            +
                hiredis (0.4.5)
         | 
| 25 34 | 
             
                i18n (0.6.1)
         | 
| 26 35 | 
             
                multi_json (1.5.0)
         | 
| 36 | 
            +
                oj (2.0.0)
         | 
| 37 | 
            +
                redis (3.0.2)
         | 
| 27 38 | 
             
                rspec (2.12.0)
         | 
| 28 39 | 
             
                  rspec-core (~> 2.12.0)
         | 
| 29 40 | 
             
                  rspec-expectations (~> 2.12.0)
         | 
| @@ -38,6 +49,10 @@ PLATFORMS | |
| 38 49 |  | 
| 39 50 | 
             
            DEPENDENCIES
         | 
| 40 51 | 
             
              bson_ext
         | 
| 52 | 
            +
              debugger
         | 
| 41 53 | 
             
              em-mongo
         | 
| 54 | 
            +
              hiredis
         | 
| 55 | 
            +
              oj
         | 
| 56 | 
            +
              redis
         | 
| 42 57 | 
             
              rspec
         | 
| 43 58 | 
             
              uorm!
         | 
| @@ -0,0 +1,46 @@ | |
| 1 | 
            +
            module Uorm
         | 
| 2 | 
            +
              module Redis
         | 
| 3 | 
            +
                class Persistance
         | 
| 4 | 
            +
                  attr_reader :collection, :model
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                  def initialize model
         | 
| 7 | 
            +
                    @model = model
         | 
| 8 | 
            +
                    @collection = ::Redis.new driver: :synchrony
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  def new? object
         | 
| 12 | 
            +
                    object.id ? false : true
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  def all options = {}
         | 
| 16 | 
            +
                    keys = collection.keys
         | 
| 17 | 
            +
                    collection.mget(keys).map do |val|
         | 
| 18 | 
            +
                      MultiJson.load val if val
         | 
| 19 | 
            +
                    end
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  def find id
         | 
| 23 | 
            +
                    MultiJson.load collection.get id
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  def create object
         | 
| 27 | 
            +
                    object.id = SecureRandom.uuid
         | 
| 28 | 
            +
                    write object
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  def update object
         | 
| 32 | 
            +
                    write object
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  def delete object
         | 
| 36 | 
            +
                    collection.del object.id
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  private
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  def write object
         | 
| 42 | 
            +
                    collection.set object.id, MultiJson.dump(object)
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
            end
         | 
    
        data/lib/uorm/redis.rb
    ADDED
    
    | @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            module Uorm
         | 
| 2 | 
            +
              module Redis
         | 
| 3 | 
            +
                def self.included base
         | 
| 4 | 
            +
                  base.instance_eval do
         | 
| 5 | 
            +
                    field :id, type: Type::String
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                    def persistance
         | 
| 8 | 
            +
                      @persistance ||= Persistance.new self
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    def collection
         | 
| 12 | 
            +
                      persistance.collection
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def initialize values = {}
         | 
| 17 | 
            +
                    values[:id] ||= nil
         | 
| 18 | 
            +
                    super values
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  def persistance
         | 
| 22 | 
            +
                    self.class.persistance
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
            end
         | 
| 27 | 
            +
             | 
    
        data/lib/uorm/type.rb
    CHANGED
    
    
    
        data/lib/uorm/version.rb
    CHANGED
    
    
    
        data/lib/uorm.rb
    CHANGED
    
    | @@ -3,6 +3,7 @@ require 'uorm/version' | |
| 3 3 | 
             
            require 'active_support/callbacks'
         | 
| 4 4 | 
             
            require 'active_support/core_ext/hash'
         | 
| 5 5 |  | 
| 6 | 
            +
             | 
| 6 7 | 
             
            module Uorm
         | 
| 7 8 | 
             
              autoload :Type,             'uorm/type'
         | 
| 8 9 | 
             
              autoload :Field,            'uorm/field'
         | 
| @@ -11,8 +12,14 @@ module Uorm | |
| 11 12 | 
             
              autoload :DSL,              'uorm/dsl'
         | 
| 12 13 | 
             
              autoload :Callbacks,        'uorm/callbacks'
         | 
| 13 14 |  | 
| 15 | 
            +
              autoload :Redis,            'uorm/redis'
         | 
| 16 | 
            +
              module Redis
         | 
| 17 | 
            +
                autoload :Persistance,    'uorm/redis/persistance'
         | 
| 18 | 
            +
                require 'multi_json'
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 14 21 | 
             
              module EM
         | 
| 15 | 
            -
                autoload :Mongo, | 
| 22 | 
            +
                autoload :Mongo,          'uorm/em-mongo'
         | 
| 16 23 |  | 
| 17 24 | 
             
                module Mongo
         | 
| 18 25 | 
             
                  require 'uorm/em-mongo/object_id'
         | 
| @@ -20,4 +27,5 @@ module Uorm | |
| 20 27 | 
             
                  autoload :Persistance,  'uorm/em-mongo/persistance'
         | 
| 21 28 | 
             
                end
         | 
| 22 29 | 
             
              end
         | 
| 30 | 
            +
             | 
| 23 31 | 
             
            end
         | 
| @@ -1,22 +1,14 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
                def after_create model
         | 
| 6 | 
            -
                  model.id.to_s.should_not == ''
         | 
| 7 | 
            -
                end
         | 
| 3 | 
            +
            require 'em-mongo'
         | 
| 4 | 
            +
            require 'em-synchrony/em-mongo'
         | 
| 8 5 |  | 
| 9 | 
            -
             | 
| 10 | 
            -
                  model.is_a?(AModel).should == true
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
              end
         | 
| 13 | 
            -
            end
         | 
| 6 | 
            +
            Uorm::EM::Mongo::DB.name = 'uorm_test'
         | 
| 14 7 |  | 
| 15 | 
            -
            class  | 
| 8 | 
            +
            class AMongoModel
         | 
| 16 9 | 
             
              include Uorm::DSL
         | 
| 17 10 | 
             
              include Uorm::Attributes
         | 
| 18 11 | 
             
              include Uorm::EM::Mongo
         | 
| 19 | 
            -
              include Uorm::Callbacks
         | 
| 20 12 |  | 
| 21 13 | 
             
              field :reference, type: Uorm::Type::ObjectId
         | 
| 22 14 | 
             
              field :name,      type: Uorm::Type::String
         | 
| @@ -24,13 +16,10 @@ class AModel | |
| 24 16 | 
             
              field :dollars,   type: Uorm::Type::Float
         | 
| 25 17 | 
             
              field :favorite,  type: Uorm::Type::Boolean
         | 
| 26 18 | 
             
              field :created,   type: Uorm::Type::Time
         | 
| 27 | 
            -
             | 
| 28 | 
            -
              set_callback :save,   :after, CallbackTester
         | 
| 29 | 
            -
              set_callback :create, :after, CallbackTester
         | 
| 30 19 | 
             
            end
         | 
| 31 20 |  | 
| 32 | 
            -
            describe  | 
| 33 | 
            -
              after {  | 
| 21 | 
            +
            describe AMongoModel do
         | 
| 22 | 
            +
              after { AMongoModel.collection.remove }
         | 
| 34 23 |  | 
| 35 24 | 
             
              let(:attributes) do
         | 
| 36 25 | 
             
                {
         | 
| @@ -44,7 +33,7 @@ describe AModel do | |
| 44 33 | 
             
              end
         | 
| 45 34 |  | 
| 46 35 | 
             
              describe '.new' do
         | 
| 47 | 
            -
                subject {  | 
| 36 | 
            +
                subject { AMongoModel.new attributes }
         | 
| 48 37 |  | 
| 49 38 | 
             
                its(:reference) { should == BSON::ObjectId('50995b8c15529d4676000001') }
         | 
| 50 39 | 
             
                its(:name)      { should == 'whatever' }
         | 
| @@ -68,93 +57,93 @@ describe AModel do | |
| 68 57 |  | 
| 69 58 | 
             
              describe '.all' do
         | 
| 70 59 | 
             
                it 'returns a collection of all objects' do
         | 
| 71 | 
            -
                   | 
| 60 | 
            +
                  AMongoModel.collection.insert name: 'findme'
         | 
| 72 61 |  | 
| 73 | 
            -
                   | 
| 62 | 
            +
                  AMongoModel.all.should be_collection_of AMongoModel
         | 
| 74 63 | 
             
                end
         | 
| 75 64 |  | 
| 76 65 | 
             
                it 'returns a collection of objects with the query' do
         | 
| 77 | 
            -
                   | 
| 66 | 
            +
                  AMongoModel.collection.insert name: 'findme'
         | 
| 78 67 |  | 
| 79 | 
            -
                   | 
| 68 | 
            +
                  AMongoModel.all(name: 'findme').should be_collection_of AMongoModel
         | 
| 80 69 | 
             
                end
         | 
| 81 70 |  | 
| 82 71 | 
             
                it 'converts time strings into time objects' do
         | 
| 83 | 
            -
                   | 
| 72 | 
            +
                  AMongoModel.collection.insert created: Time.parse('2001-01-02')
         | 
| 84 73 |  | 
| 85 | 
            -
                   | 
| 86 | 
            -
                    should be_collection_of  | 
| 74 | 
            +
                  AMongoModel.all(created: { '$gt' => '2001-01-01' }).
         | 
| 75 | 
            +
                    should be_collection_of AMongoModel
         | 
| 87 76 |  | 
| 88 | 
            -
                   | 
| 77 | 
            +
                  AMongoModel.all(created: { '$lt' => Time.parse('2001-01-01')}).
         | 
| 89 78 | 
             
                    should be_empty
         | 
| 90 79 | 
             
                end
         | 
| 91 80 |  | 
| 92 81 | 
             
                it 'converts reference strings into BSON::ObjectId objects' do
         | 
| 93 | 
            -
                   | 
| 82 | 
            +
                  AMongoModel.collection.insert reference: BSON::ObjectId('50995b8c15529d4676000001')
         | 
| 94 83 |  | 
| 95 | 
            -
                   | 
| 96 | 
            -
                    should be_collection_of  | 
| 84 | 
            +
                  AMongoModel.all(reference: '50995b8c15529d4676000001').
         | 
| 85 | 
            +
                    should be_collection_of AMongoModel
         | 
| 97 86 | 
             
                end
         | 
| 98 87 |  | 
| 99 88 | 
             
                it 'converts multiple query parameters' do
         | 
| 100 | 
            -
                   | 
| 89 | 
            +
                  AMongoModel.collection.insert reference: BSON::ObjectId('50995b8c15529d4676000001'), created: Time.parse('2003-01-01')
         | 
| 101 90 |  | 
| 102 | 
            -
                   | 
| 103 | 
            -
                    should be_collection_of  | 
| 91 | 
            +
                  AMongoModel.all(reference: '50995b8c15529d4676000001', created: '2003-01-01').
         | 
| 92 | 
            +
                    should be_collection_of AMongoModel
         | 
| 104 93 | 
             
                end
         | 
| 105 94 | 
             
              end
         | 
| 106 95 |  | 
| 107 96 | 
             
              describe '.find' do
         | 
| 108 97 | 
             
                it 'returns the first object with the given id' do
         | 
| 109 | 
            -
                  model =  | 
| 110 | 
            -
                   | 
| 98 | 
            +
                  model = AMongoModel.create attributes
         | 
| 99 | 
            +
                  AMongoModel.find(model.id).should be_instance_of AMongoModel
         | 
| 111 100 | 
             
                end
         | 
| 112 101 |  | 
| 113 102 | 
             
                it 'converts id BSON::ObjectId' do
         | 
| 114 | 
            -
                  model =  | 
| 115 | 
            -
                   | 
| 103 | 
            +
                  model = AMongoModel.create attributes
         | 
| 104 | 
            +
                  AMongoModel.find(model.id.to_s).should be_instance_of AMongoModel
         | 
| 116 105 | 
             
                end
         | 
| 117 106 | 
             
              end
         | 
| 118 107 |  | 
| 119 108 | 
             
              describe '.create' do
         | 
| 120 109 | 
             
                it 'adds the object to the collection' do
         | 
| 121 | 
            -
                  expect {  | 
| 110 | 
            +
                  expect { AMongoModel.create attributes }.to change { AMongoModel.collection.count }
         | 
| 122 111 | 
             
                end
         | 
| 123 112 |  | 
| 124 113 | 
             
                it 'returns an object with the newly created attributes' do
         | 
| 125 | 
            -
                   | 
| 114 | 
            +
                  AMongoModel.create(attributes).should be_instance_of AMongoModel
         | 
| 126 115 | 
             
                end
         | 
| 127 116 | 
             
              end
         | 
| 128 117 |  | 
| 129 118 | 
             
              describe '#save' do
         | 
| 130 119 | 
             
                it 'creates the object if it does not have an id' do
         | 
| 131 | 
            -
                  model =  | 
| 120 | 
            +
                  model = AMongoModel.new attributes
         | 
| 132 121 | 
             
                  expect { model.save }.to change { model.id }
         | 
| 133 122 | 
             
                end
         | 
| 134 123 |  | 
| 135 124 | 
             
                it 'updates the object if it does exist' do
         | 
| 136 | 
            -
                  model =  | 
| 125 | 
            +
                  model = AMongoModel.create attributes
         | 
| 137 126 | 
             
                  expect { model.save }.to_not change { model.id }
         | 
| 138 127 | 
             
                end
         | 
| 139 128 | 
             
              end
         | 
| 140 129 |  | 
| 141 130 | 
             
              describe '#update' do
         | 
| 142 131 | 
             
                it 'updates the object with the given attributes' do
         | 
| 143 | 
            -
                  model =  | 
| 132 | 
            +
                  model = AMongoModel.create attributes
         | 
| 144 133 | 
             
                  expect { model.update name: 'new' }.to change { model.name }
         | 
| 145 134 | 
             
                end
         | 
| 146 135 |  | 
| 147 136 | 
             
                it 'updates the collection with the given attributes' do
         | 
| 148 | 
            -
                  model =  | 
| 137 | 
            +
                  model = AMongoModel.create attributes
         | 
| 149 138 | 
             
                  expect { model.update name: 'another' }.
         | 
| 150 | 
            -
                    to change {  | 
| 139 | 
            +
                    to change { AMongoModel.collection.find(name: 'another').count }
         | 
| 151 140 | 
             
                end
         | 
| 152 141 | 
             
              end
         | 
| 153 142 |  | 
| 154 143 | 
             
              describe '#delete' do
         | 
| 155 144 | 
             
                it 'removes the object from the collection' do
         | 
| 156 | 
            -
                  model =  | 
| 157 | 
            -
                  expect { model.delete }.to change {  | 
| 145 | 
            +
                  model = AMongoModel.create attributes
         | 
| 146 | 
            +
                  expect { model.delete }.to change { AMongoModel.collection.count }
         | 
| 158 147 | 
             
                end
         | 
| 159 148 | 
             
              end
         | 
| 160 149 | 
             
            end
         | 
| @@ -0,0 +1,112 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'redis'
         | 
| 4 | 
            +
            require 'hiredis'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class ARedisModel
         | 
| 7 | 
            +
              include Uorm::DSL
         | 
| 8 | 
            +
              include Uorm::Attributes
         | 
| 9 | 
            +
              include Uorm::Redis
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              field :reference, type: Uorm::Type::String
         | 
| 12 | 
            +
              field :name,      type: Uorm::Type::String
         | 
| 13 | 
            +
              field :count,     type: Uorm::Type::Integer
         | 
| 14 | 
            +
              field :dollars,   type: Uorm::Type::Float
         | 
| 15 | 
            +
              field :favorite,  type: Uorm::Type::Boolean
         | 
| 16 | 
            +
              field :created,   type: Uorm::Type::Time
         | 
| 17 | 
            +
            end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            describe ARedisModel do
         | 
| 20 | 
            +
              after { ARedisModel.collection.flushdb }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              let(:attributes) do
         | 
| 23 | 
            +
                {
         | 
| 24 | 
            +
                  reference: '2d931510-d99f-494a-8c67-87feb05e1594',
         | 
| 25 | 
            +
                  name: 'whatever',
         | 
| 26 | 
            +
                  count: 5.to_s,
         | 
| 27 | 
            +
                  dollars: 2.3.to_s,
         | 
| 28 | 
            +
                  favorite: true.to_s,
         | 
| 29 | 
            +
                  created: Time.utc(0).to_s
         | 
| 30 | 
            +
                }
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              describe '.new' do
         | 
| 34 | 
            +
                subject { ARedisModel.new attributes }
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                its(:reference) { should == '2d931510-d99f-494a-8c67-87feb05e1594' }
         | 
| 37 | 
            +
                its(:name)      { should == 'whatever' }
         | 
| 38 | 
            +
                its(:count)     { should == 5 }
         | 
| 39 | 
            +
                its(:dollars)   { should == 2.3 }
         | 
| 40 | 
            +
                its(:favorite)  { should be_true }
         | 
| 41 | 
            +
                its(:created)   { should == Time.utc(0) }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                its(:as_json) do
         | 
| 44 | 
            +
                  should == {
         | 
| 45 | 
            +
                    reference: '2d931510-d99f-494a-8c67-87feb05e1594',
         | 
| 46 | 
            +
                    name: "whatever",
         | 
| 47 | 
            +
                    count: 5,
         | 
| 48 | 
            +
                    dollars: 2.3,
         | 
| 49 | 
            +
                    favorite: true,
         | 
| 50 | 
            +
                    created: Time.utc(0).to_i,
         | 
| 51 | 
            +
                    id: nil
         | 
| 52 | 
            +
                  }
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
             | 
| 57 | 
            +
              describe '.all' do
         | 
| 58 | 
            +
                it 'returns a collection of all objects' do
         | 
| 59 | 
            +
                  ARedisModel.create attributes
         | 
| 60 | 
            +
                  ARedisModel.all.should be_collection_of ARedisModel
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              describe '.find' do
         | 
| 65 | 
            +
                it 'returns the first object with the given id' do
         | 
| 66 | 
            +
                  model = ARedisModel.create attributes
         | 
| 67 | 
            +
                  ARedisModel.find(model.id).should be_instance_of ARedisModel
         | 
| 68 | 
            +
                end
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              describe '.create' do
         | 
| 72 | 
            +
                it 'adds the object to the collection' do
         | 
| 73 | 
            +
                  expect { ARedisModel.create attributes }.to change { ARedisModel.collection.dbsize }
         | 
| 74 | 
            +
                end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                it 'returns an object with the newly created attributes' do
         | 
| 77 | 
            +
                  ARedisModel.create(attributes).should be_instance_of ARedisModel
         | 
| 78 | 
            +
                end
         | 
| 79 | 
            +
              end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
              describe '#save' do
         | 
| 82 | 
            +
                it 'creates the object if it does not have an id' do
         | 
| 83 | 
            +
                  model = ARedisModel.new attributes
         | 
| 84 | 
            +
                  expect { model.save }.to change { model.id }
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                it 'updates the object if it does exist' do
         | 
| 88 | 
            +
                  model = ARedisModel.create attributes
         | 
| 89 | 
            +
                  expect { model.save }.to_not change { model.id }
         | 
| 90 | 
            +
                end
         | 
| 91 | 
            +
              end
         | 
| 92 | 
            +
             | 
| 93 | 
            +
              describe '#update' do
         | 
| 94 | 
            +
                it 'updates the object with the given attributes' do
         | 
| 95 | 
            +
                  model = ARedisModel.create attributes
         | 
| 96 | 
            +
                  expect { model.update name: 'new' }.to change { model.name }
         | 
| 97 | 
            +
                end
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                it 'updates the collection with the given attributes' do
         | 
| 100 | 
            +
                  model = ARedisModel.create attributes
         | 
| 101 | 
            +
                  expect { model.update name: 'another' }.
         | 
| 102 | 
            +
                    to change { ARedisModel.find(model.id).name }
         | 
| 103 | 
            +
                end
         | 
| 104 | 
            +
              end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
              describe '#delete' do
         | 
| 107 | 
            +
                it 'removes the object from the collection' do
         | 
| 108 | 
            +
                  model = ARedisModel.create attributes
         | 
| 109 | 
            +
                  expect { model.delete }.to change { ARedisModel.collection.dbsize }
         | 
| 110 | 
            +
                end
         | 
| 111 | 
            +
              end
         | 
| 112 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -1,21 +1,14 @@ | |
| 1 | 
            +
            require 'support/be_collection_of'
         | 
| 1 2 | 
             
            require 'uorm'
         | 
| 2 3 |  | 
| 3 | 
            -
            require 'em-mongo'
         | 
| 4 4 | 
             
            require 'em-synchrony'
         | 
| 5 | 
            -
            require 'em-synchrony/em-mongo'
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            Uorm::EM::Mongo::DB.name = 'uorm_test'
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            require 'support/be_collection_of'
         | 
| 10 5 |  | 
| 11 6 | 
             
            # monkey patch to wrap all tests in the reactor
         | 
| 12 7 | 
             
            module RSpec
         | 
| 13 8 | 
             
              module Core
         | 
| 14 9 | 
             
                class ExampleGroup
         | 
| 15 10 | 
             
                  class << self
         | 
| 16 | 
            -
             | 
| 17 11 | 
             
                    alias_method :run_alias, :run
         | 
| 18 | 
            -
             | 
| 19 12 | 
             
                    def run(reporter)
         | 
| 20 13 | 
             
                      if EM.reactor_running?
         | 
| 21 14 | 
             
                        run_alias reporter
         | 
    
        data/uorm.gemspec
    CHANGED
    
    | @@ -6,11 +6,11 @@ require 'uorm/version' | |
| 6 6 | 
             
            Gem::Specification.new do |gem|
         | 
| 7 7 | 
             
              gem.name          = "uorm"
         | 
| 8 8 | 
             
              gem.version       = Uorm::VERSION
         | 
| 9 | 
            -
              gem.authors       = [ | 
| 10 | 
            -
              gem.email         = [ | 
| 9 | 
            +
              gem.authors       = ['Dennis Rogenius']
         | 
| 10 | 
            +
              gem.email         = ['denro03@gmail.com']
         | 
| 11 11 | 
             
              gem.description   = %q{A modular, flexible and lightweight ORM}
         | 
| 12 12 | 
             
              gem.summary       = %q{A small ORM for ruby with focus on weight and modularity}
         | 
| 13 | 
            -
              gem.homepage      =  | 
| 13 | 
            +
              gem.homepage      = 'https://github.com/denro/uorm'
         | 
| 14 14 |  | 
| 15 15 | 
             
              gem.files         = `git ls-files`.split($/)
         | 
| 16 16 | 
             
              gem.executables   = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
         | 
| @@ -21,6 +21,10 @@ Gem::Specification.new do |gem| | |
| 21 21 | 
             
              gem.add_dependency 'em-synchrony'
         | 
| 22 22 |  | 
| 23 23 | 
             
              gem.add_development_dependency 'rspec'
         | 
| 24 | 
            +
              gem.add_development_dependency 'debugger'
         | 
| 24 25 | 
             
              gem.add_development_dependency 'em-mongo'
         | 
| 25 26 | 
             
              gem.add_development_dependency 'bson_ext'
         | 
| 27 | 
            +
              gem.add_development_dependency 'oj'
         | 
| 28 | 
            +
              gem.add_development_dependency 'redis'
         | 
| 29 | 
            +
              gem.add_development_dependency 'hiredis'
         | 
| 26 30 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: uorm
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.2
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -59,6 +59,22 @@ dependencies: | |
| 59 59 | 
             
                - - ! '>='
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 61 | 
             
                    version: '0'
         | 
| 62 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 63 | 
            +
              name: debugger
         | 
| 64 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                none: false
         | 
| 66 | 
            +
                requirements:
         | 
| 67 | 
            +
                - - ! '>='
         | 
| 68 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 69 | 
            +
                    version: '0'
         | 
| 70 | 
            +
              type: :development
         | 
| 71 | 
            +
              prerelease: false
         | 
| 72 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 73 | 
            +
                none: false
         | 
| 74 | 
            +
                requirements:
         | 
| 75 | 
            +
                - - ! '>='
         | 
| 76 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 77 | 
            +
                    version: '0'
         | 
| 62 78 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 63 79 | 
             
              name: em-mongo
         | 
| 64 80 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -91,6 +107,54 @@ dependencies: | |
| 91 107 | 
             
                - - ! '>='
         | 
| 92 108 | 
             
                  - !ruby/object:Gem::Version
         | 
| 93 109 | 
             
                    version: '0'
         | 
| 110 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 111 | 
            +
              name: oj
         | 
| 112 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 113 | 
            +
                none: false
         | 
| 114 | 
            +
                requirements:
         | 
| 115 | 
            +
                - - ! '>='
         | 
| 116 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            +
                    version: '0'
         | 
| 118 | 
            +
              type: :development
         | 
| 119 | 
            +
              prerelease: false
         | 
| 120 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 | 
            +
                none: false
         | 
| 122 | 
            +
                requirements:
         | 
| 123 | 
            +
                - - ! '>='
         | 
| 124 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 125 | 
            +
                    version: '0'
         | 
| 126 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 127 | 
            +
              name: redis
         | 
| 128 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 129 | 
            +
                none: false
         | 
| 130 | 
            +
                requirements:
         | 
| 131 | 
            +
                - - ! '>='
         | 
| 132 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 133 | 
            +
                    version: '0'
         | 
| 134 | 
            +
              type: :development
         | 
| 135 | 
            +
              prerelease: false
         | 
| 136 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 137 | 
            +
                none: false
         | 
| 138 | 
            +
                requirements:
         | 
| 139 | 
            +
                - - ! '>='
         | 
| 140 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 141 | 
            +
                    version: '0'
         | 
| 142 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 143 | 
            +
              name: hiredis
         | 
| 144 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 145 | 
            +
                none: false
         | 
| 146 | 
            +
                requirements:
         | 
| 147 | 
            +
                - - ! '>='
         | 
| 148 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 149 | 
            +
                    version: '0'
         | 
| 150 | 
            +
              type: :development
         | 
| 151 | 
            +
              prerelease: false
         | 
| 152 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 153 | 
            +
                none: false
         | 
| 154 | 
            +
                requirements:
         | 
| 155 | 
            +
                - - ! '>='
         | 
| 156 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 157 | 
            +
                    version: '0'
         | 
| 94 158 | 
             
            description: A modular, flexible and lightweight ORM
         | 
| 95 159 | 
             
            email:
         | 
| 96 160 | 
             
            - denro03@gmail.com
         | 
| @@ -114,13 +178,16 @@ files: | |
| 114 178 | 
             
            - lib/uorm/em-mongo/persistance.rb
         | 
| 115 179 | 
             
            - lib/uorm/field.rb
         | 
| 116 180 | 
             
            - lib/uorm/field_collection.rb
         | 
| 181 | 
            +
            - lib/uorm/redis.rb
         | 
| 182 | 
            +
            - lib/uorm/redis/persistance.rb
         | 
| 117 183 | 
             
            - lib/uorm/type.rb
         | 
| 118 184 | 
             
            - lib/uorm/version.rb
         | 
| 185 | 
            +
            - spec/em-mongo_spec.rb
         | 
| 186 | 
            +
            - spec/redis_synchrony_spec.rb
         | 
| 119 187 | 
             
            - spec/spec_helper.rb
         | 
| 120 188 | 
             
            - spec/support/be_collection_of.rb
         | 
| 121 | 
            -
            - spec/urm_spec.rb
         | 
| 122 189 | 
             
            - uorm.gemspec
         | 
| 123 | 
            -
            homepage:  | 
| 190 | 
            +
            homepage: https://github.com/denro/uorm
         | 
| 124 191 | 
             
            licenses: []
         | 
| 125 192 | 
             
            post_install_message: 
         | 
| 126 193 | 
             
            rdoc_options: []
         | 
| @@ -145,6 +212,7 @@ signing_key: | |
| 145 212 | 
             
            specification_version: 3
         | 
| 146 213 | 
             
            summary: A small ORM for ruby with focus on weight and modularity
         | 
| 147 214 | 
             
            test_files:
         | 
| 215 | 
            +
            - spec/em-mongo_spec.rb
         | 
| 216 | 
            +
            - spec/redis_synchrony_spec.rb
         | 
| 148 217 | 
             
            - spec/spec_helper.rb
         | 
| 149 218 | 
             
            - spec/support/be_collection_of.rb
         | 
| 150 | 
            -
            - spec/urm_spec.rb
         |