mongomodel 0.4.3 → 0.4.4

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/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  .bundle
2
2
  Gemfile.lock
3
+ gemfiles/*.lock
3
4
  pkg/*
data/Appraisals CHANGED
@@ -1,9 +1,9 @@
1
1
  appraise "rails-3.1" do
2
- gem "activesupport", "3.1.0"
3
- gem "activemodel", "3.1.0"
2
+ gem "activesupport", "3.1.3"
3
+ gem "activemodel", "3.1.3"
4
4
  end
5
5
 
6
- appraise "rails-edge" do
7
- gem "activesupport", :git => "https://github.com/rails/rails.git"
8
- gem "activemodel", :git => "https://github.com/rails/rails.git"
6
+ appraise "rails-3.2" do
7
+ gem "activesupport", :git => "https://github.com/rails/rails.git", :branch => '3-2-stable'
8
+ gem "activemodel", :git => "https://github.com/rails/rails.git", :branch => '3-2-stable'
9
9
  end
@@ -2,10 +2,10 @@
2
2
 
3
3
  source "http://rubygems.org"
4
4
 
5
+ gem "appraisal", "~> 0.3.6"
5
6
  gem "bson_ext", "~> 1.5"
6
7
  gem "tzinfo"
7
- gem "activemodel", "3.1.0"
8
- gem "activesupport", "3.1.0"
9
- gem "appraisal", "~> 0.3.6"
8
+ gem "activesupport", "3.1.3"
9
+ gem "activemodel", "3.1.3"
10
10
 
11
11
  gemspec :path=>"../"
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "appraisal", "~> 0.3.6"
6
+ gem "bson_ext", "~> 1.5"
7
+ gem "tzinfo"
8
+ gem "activesupport", :git=>"https://github.com/rails/rails.git", :branch=>"3-2-stable"
9
+ gem "activemodel", :git=>"https://github.com/rails/rails.git", :branch=>"3-2-stable"
10
+
11
+ gemspec :path=>"../"
@@ -9,6 +9,7 @@ module MongoModel
9
9
  # accessors, mutators and query methods.
10
10
  def define_attribute_methods
11
11
  return if attribute_methods_generated?
12
+ superclass.define_attribute_methods unless abstract_class?
12
13
  super(properties.keys)
13
14
  @attribute_methods_generated = true
14
15
  end
@@ -27,6 +28,13 @@ module MongoModel
27
28
  undefine_attribute_methods
28
29
  property
29
30
  end
31
+
32
+ protected
33
+ def instance_method_already_implemented?(method_name)
34
+ method_defined?(method_name) ||
35
+ private_method_defined?(method_name) ||
36
+ super
37
+ end
30
38
  end
31
39
 
32
40
  def method_missing(method, *args, &block)
@@ -3,8 +3,11 @@ module MongoModel
3
3
  module Read
4
4
  extend ActiveSupport::Concern
5
5
 
6
- included do
7
- attribute_method_suffix ""
6
+ # ActiveModel 3.2 defines the non-prefixed attribute name automatically
7
+ if ActiveModel::VERSION::STRING <= "3.2"
8
+ included do
9
+ attribute_method_suffix ""
10
+ end
8
11
  end
9
12
 
10
13
  # Returns the value of the attribute identified by +name+ after it has been typecast (for example,
@@ -1,7 +1,21 @@
1
- require 'rational' unless RUBY_VERSION >= '1.9.2'
2
- require 'set'
3
-
4
1
  require 'mongomodel/support/types/object'
2
+ require 'mongomodel/support/types/custom'
3
+
4
+ module MongoModel
5
+ module Types
6
+ CONVERTERS = Hash.new { |h, k| h[k] = Types::Custom.new(k) }
7
+
8
+ def self.register_converter(type, converter)
9
+ CONVERTERS[type] = converter
10
+ end
11
+
12
+ def self.converter_for(type)
13
+ CONVERTERS[type]
14
+ end
15
+ end
16
+ end
17
+
18
+ # Built-in types
5
19
  require 'mongomodel/support/types/string'
6
20
  require 'mongomodel/support/types/integer'
7
21
  require 'mongomodel/support/types/float'
@@ -10,35 +24,8 @@ require 'mongomodel/support/types/symbol'
10
24
  require 'mongomodel/support/types/date'
11
25
  require 'mongomodel/support/types/time'
12
26
  require 'mongomodel/support/types/date_time'
13
- require 'mongomodel/support/types/custom'
14
27
  require 'mongomodel/support/types/array'
15
28
  require 'mongomodel/support/types/set'
16
29
  require 'mongomodel/support/types/hash'
17
30
  require 'mongomodel/support/types/rational'
18
-
19
- module MongoModel
20
- module Types
21
- CONVERTERS = {
22
- ::String => Types::String.new,
23
- ::Integer => Types::Integer.new,
24
- ::Float => Types::Float.new,
25
- ::Boolean => Types::Boolean.new,
26
- ::Symbol => Types::Symbol.new,
27
- ::Date => Types::Date.new,
28
- ::Time => Types::Time.new,
29
- ::DateTime => Types::DateTime.new,
30
- ::Array => Types::Array.new,
31
- ::Set => Types::Set.new,
32
- ::Hash => Types::Hash.new,
33
- ::Rational => Types::Rational.new
34
- }
35
-
36
- def self.converter_for(type)
37
- if CONVERTERS[type]
38
- CONVERTERS[type]
39
- else
40
- CONVERTERS[type] = Types::Custom.new(type)
41
- end
42
- end
43
- end
44
- end
31
+ require 'mongomodel/support/types/openstruct'
@@ -2,14 +2,14 @@ module MongoModel
2
2
  module Types
3
3
  class Array < Object
4
4
  def to_mongo(array)
5
- array.map { |i|
6
- Types.converter_for(i.class).to_mongo(i)
7
- } if array
5
+ array.map { |i| convert(i) } if array
8
6
  end
9
7
 
10
8
  def to_query(value)
11
- Types.converter_for(value.class).to_mongo(value)
9
+ convert(value)
12
10
  end
13
11
  end
14
12
  end
15
13
  end
14
+
15
+ MongoModel::Types.register_converter(Array, MongoModel::Types::Array.new)
@@ -23,3 +23,5 @@ module MongoModel
23
23
  end
24
24
  end
25
25
  end
26
+
27
+ MongoModel::Types.register_converter(Boolean, MongoModel::Types::Boolean.new)
@@ -25,3 +25,5 @@ module MongoModel
25
25
  end
26
26
  end
27
27
  end
28
+
29
+ MongoModel::Types.register_converter(Date, MongoModel::Types::Date.new)
@@ -37,3 +37,5 @@ module MongoModel
37
37
  end
38
38
  end
39
39
  end
40
+
41
+ MongoModel::Types.register_converter(DateTime, MongoModel::Types::DateTime.new)
@@ -15,3 +15,5 @@ module MongoModel
15
15
  end
16
16
  end
17
17
  end
18
+
19
+ MongoModel::Types.register_converter(Float, MongoModel::Types::Float.new)
@@ -5,7 +5,7 @@ module MongoModel
5
5
  class Hash < Object
6
6
  def to_mongo(hash)
7
7
  hash.inject({}) { |result, (k, v)|
8
- result[k] = Types.converter_for(v.class).to_mongo(v)
8
+ result[convert(k)] = convert(v)
9
9
  result
10
10
  } if hash
11
11
  end
@@ -16,3 +16,5 @@ module MongoModel
16
16
  end
17
17
  end
18
18
  end
19
+
20
+ MongoModel::Types.register_converter(Hash, MongoModel::Types::Hash.new)
@@ -19,3 +19,5 @@ module MongoModel
19
19
  end
20
20
  end
21
21
  end
22
+
23
+ MongoModel::Types.register_converter(Integer, MongoModel::Types::Integer.new)
@@ -20,6 +20,11 @@ module MongoModel
20
20
  def to_query(value)
21
21
  to_mongo(cast(value))
22
22
  end
23
+
24
+ protected
25
+ def convert(value)
26
+ Types.converter_for(value.class).to_mongo(value)
27
+ end
23
28
  end
24
29
  end
25
30
  end
@@ -0,0 +1,26 @@
1
+ require 'ostruct'
2
+
3
+ module MongoModel
4
+ module Types
5
+ class OpenStruct < Object
6
+ def cast(value)
7
+ case value
8
+ when ::OpenStruct
9
+ value
10
+ else
11
+ ::OpenStruct.new(value)
12
+ end
13
+ end
14
+
15
+ def to_mongo(value)
16
+ value.marshal_dump if value
17
+ end
18
+
19
+ def from_mongo(value)
20
+ ::OpenStruct.new(value)
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ MongoModel::Types.register_converter(OpenStruct, MongoModel::Types::OpenStruct.new)
@@ -1,3 +1,5 @@
1
+ require 'rational' unless RUBY_VERSION >= '1.9.2'
2
+
1
3
  module MongoModel
2
4
  module Types
3
5
  class Rational < Object
@@ -40,3 +42,5 @@ module MongoModel
40
42
  end
41
43
  end
42
44
  end
45
+
46
+ MongoModel::Types.register_converter(Rational, MongoModel::Types::Rational.new)
@@ -1,3 +1,5 @@
1
+ require 'set'
2
+
1
3
  module MongoModel
2
4
  module Types
3
5
  class Set < Array
@@ -7,3 +9,5 @@ module MongoModel
7
9
  end
8
10
  end
9
11
  end
12
+
13
+ MongoModel::Types.register_converter(Set, MongoModel::Types::Set.new)
@@ -7,3 +7,5 @@ module MongoModel
7
7
  end
8
8
  end
9
9
  end
10
+
11
+ MongoModel::Types.register_converter(String, MongoModel::Types::String.new)
@@ -7,3 +7,5 @@ module MongoModel
7
7
  end
8
8
  end
9
9
  end
10
+
11
+ MongoModel::Types.register_converter(Symbol, MongoModel::Types::Symbol.new)
@@ -31,3 +31,5 @@ module MongoModel
31
31
  end
32
32
  end
33
33
  end
34
+
35
+ MongoModel::Types.register_converter(Time, MongoModel::Types::Time.new)
@@ -1,3 +1,3 @@
1
1
  module MongoModel
2
- VERSION = "0.4.3"
2
+ VERSION = "0.4.4"
3
3
  end
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.add_dependency "will_paginate", "~> 2.3.15"
21
21
 
22
22
  s.add_development_dependency "bundler", ">= 1.0.0"
23
- s.add_development_dependency "rspec", "~> 2.6.0"
23
+ s.add_development_dependency "rspec", "~> 2.8"
24
24
  s.add_development_dependency "guard-rspec", "~> 0.5.0"
25
25
 
26
26
  s.files = `git ls-files`.split("\n")
@@ -1,7 +1,9 @@
1
1
  require 'spec_helper'
2
-
3
2
  require 'active_support/core_ext/hash/indifferent_access'
4
- require 'active_support/core_ext/time/conversions'
3
+
4
+ require 'set'
5
+ require "ostruct"
6
+ require 'rational' unless RUBY_VERSION >= '1.9.2'
5
7
 
6
8
  module MongoModel
7
9
  describe Attributes::Store do
@@ -18,6 +20,7 @@ module MongoModel
18
20
  properties[:time] = MongoModel::Properties::Property.new(:time, Time)
19
21
  properties[:datetime] = MongoModel::Properties::Property.new(:datetime, DateTime)
20
22
  properties[:rational] = MongoModel::Properties::Property.new(:rational, Rational)
23
+ properties[:openstruct] = MongoModel::Properties::Property.new(:openstruct, OpenStruct)
21
24
  properties[:custom] = MongoModel::Properties::Property.new(:custom, CustomClass)
22
25
  properties[:custom_default] = MongoModel::Properties::Property.new(:custom_default, CustomClassWithDefault)
23
26
  properties[:default] = MongoModel::Properties::Property.new(:default, String, :default => 'Default')
@@ -153,6 +156,11 @@ module MongoModel
153
156
  {
154
157
  Rational(1, 15) => Rational(1, 15),
155
158
  "2/3" => Rational(2, 3)
159
+ },
160
+ :openstruct =>
161
+ {
162
+ OpenStruct.new(:abc => 123) => OpenStruct.new(:abc => 123),
163
+ { :mykey => "Hello world" } => OpenStruct.new(:mykey => "Hello world")
156
164
  }
157
165
  }
158
166
 
@@ -201,6 +209,7 @@ module MongoModel
201
209
  :hash => [ { :foo => 'bar' } ],
202
210
  :array => [ [123, 'abc', :foo, true] ],
203
211
  :rational => [ "2/3" ],
212
+ :openstruct => [ { :abc => 123 } ],
204
213
  :date => [ Date.civil(2009, 11, 15), Time.local(2008, 12, 3, 0, 0, 0, 0), "2009/3/4", "Sat Jan 01 20:15:01 UTC 2000" ],
205
214
  :time => [ Time.local(2008, 5, 14, 1, 2, 3, 4), Date.civil(2009, 11, 15), "Sat Jan 01 20:15:01 UTC 2000", "2009/3/4" ]
206
215
  }
@@ -229,6 +238,7 @@ module MongoModel
229
238
  :date => [ Date.civil(2009, 11, 15) ],
230
239
  :time => [ Time.local(2008, 5, 14, 1, 2, 3, 4) ],
231
240
  :rational => [ Rational(2, 3) ],
241
+ :openstruct => [ {} ],
232
242
  :custom => [ CustomClass.new('foobar'), 'baz' ]
233
243
  }
234
244
 
@@ -243,6 +253,7 @@ module MongoModel
243
253
  :date => [ nil, '' ],
244
254
  :time => [ nil, '' ],
245
255
  :rational => [ nil ],
256
+ :openstruct => [ nil ],
246
257
  :custom => [ nil ]
247
258
  }
248
259
 
@@ -281,6 +292,7 @@ module MongoModel
281
292
  subject[:date] = Date.civil(2009, 11, 15)
282
293
  subject[:time] = Time.local(2008, 5, 14, 1, 2, 3, 4, 0.5)
283
294
  subject[:rational] = Rational(2, 3)
295
+ subject[:openstruct] = OpenStruct.new(:abc => 123)
284
296
  subject[:custom] = CustomClass.new('custom')
285
297
  subject[:as] = "As property"
286
298
  subject[:non_property] = "Hello World"
@@ -297,6 +309,7 @@ module MongoModel
297
309
  'date' => "2009/11/15",
298
310
  'time' => Time.local(2008, 5, 14, 1, 2, 3, 4, 0),
299
311
  'rational' => "2/3",
312
+ 'openstruct' => { :abc => 123 },
300
313
  'custom' => { :name => 'custom' },
301
314
  '_custom_as' => "As property",
302
315
  'non_property' => "Hello World",
@@ -316,6 +329,7 @@ module MongoModel
316
329
  'date' => Time.utc(2009, 11, 15),
317
330
  'time' => Time.local(2008, 5, 14, 1, 2, 3, 4, 0.5),
318
331
  'rational' => "2/3",
332
+ 'openstruct' => { "foo" => "bar" },
319
333
  'custom' => { :name => 'custom' },
320
334
  '_custom_as' => "As property",
321
335
  'custom_non_property' => { :name => 'custom non property' }
@@ -331,6 +345,7 @@ module MongoModel
331
345
  subject[:date].should == Date.civil(2009, 11, 15)
332
346
  subject[:time].should == Time.local(2008, 5, 14, 1, 2, 3, 4, 0)
333
347
  subject[:rational].should == Rational(2, 3)
348
+ subject[:openstruct].should == OpenStruct.new(:foo => "bar")
334
349
  subject[:custom].should == CustomClass.new('custom')
335
350
  subject[:as].should == "As property"
336
351
  subject[:custom_non_property].should == { :name => 'custom non property' }
@@ -1,106 +1,25 @@
1
1
  require 'spec_helper'
2
2
 
3
- # Specs ported from ActiveModel::Lint::Tests
4
- #
5
- # These tests do not attempt to determine the semantic correctness of the
6
- # returned values. For instance, you could implement valid? to always
7
- # return true, and the tests would pass. It is up to you to ensure that
8
- # the values are semantically meaningful.
9
- #
10
- # Objects you pass in are expected to return a compliant object from a
11
- # call to to_model. It is perfectly fine for to_model to return self.
12
3
  module MongoModel
13
- specs_for(Document, EmbeddedDocument) do
14
- define_class(:TestModel, described_class)
15
-
16
- subject { TestModel.new.to_model }
17
-
18
- # == Responds to <tt>to_key</tt>
19
- #
20
- # Returns an Enumerable of all (primary) key attributes
21
- # or nil if model.persisted? is false
22
- it { should respond_to(:to_key) }
23
-
24
- specify "to_key should return nil if subject.persisted? is false" do
25
- subject.stub!(:persisted?).and_return(false)
26
- subject.to_key.should be_nil
27
- end
28
-
29
- # == Responds to <tt>to_param</tt>
30
- #
31
- # Returns a string representing the object's key suitable for use in URLs
32
- # or nil if model.persisted? is false.
33
- #
34
- # Implementers can decide to either raise an exception or provide a default
35
- # in case the record uses a composite primary key. There are no tests for this
36
- # behavior in lint because it doesn't make sense to force any of the possible
37
- # implementation strategies on the implementer. However, if the resource is
38
- # not persisted?, then to_param should always return nil.
39
- it { should respond_to(:to_param) }
40
-
41
- specify "to_param should return nil if subject.persisted? is false" do
42
- subject.stub!(:to_key).and_return([1])
43
- subject.stub!(:persisted?).and_return(false)
44
- subject.to_param.should be_nil
45
- end
46
-
47
- # == Responds to <tt>valid?</tt>
48
- #
49
- # Returns a boolean that specifies whether the object is in a valid or invalid
50
- # state.
51
- it { should respond_to_boolean(:valid?) }
4
+ shared_examples_for "ActiveModel" do
5
+ require 'test/unit/assertions'
6
+ include Test::Unit::Assertions
52
7
 
53
- # == Responds to <tt>persisted?</tt>
54
- #
55
- # Returns a boolean that specifies whether the object has been persisted yet.
56
- # This is used when calculating the URL for an object. If the object is
57
- # not persisted, a form for that object, for instance, will be POSTed to the
58
- # collection. If it is persisted, a form for the object will put PUTed to the
59
- # URL for the object.
60
- it { should respond_to_boolean(:persisted?) }
8
+ include ActiveModel::Lint::Tests
61
9
 
62
- # == Naming
63
- #
64
- # Model.model_name must returns a string with some convenience methods as
65
- # :human and :partial_path. Check ActiveModel::Naming for more information.
66
- #
67
- specify "the model class should respond to model_name" do
68
- subject.class.should respond_to(:model_name)
69
- end
70
-
71
- it "should return strings for model_name" do
72
- model_name = subject.class.model_name
73
- model_name.should be_a_kind_of(String)
74
- model_name.human.should be_a_kind_of(String)
75
- model_name.partial_path.should be_a_kind_of(String)
76
- model_name.singular.should be_a_kind_of(String)
77
- model_name.plural.should be_a_kind_of(String)
78
- end
79
-
80
- # == Errors Testing
81
- #
82
- # Returns an object that has :[] and :full_messages defined on it. See below
83
- # for more details.
84
- describe "errors" do
85
- it { should respond_to(:errors) }
86
-
87
- # Returns an Array of Strings that are the errors for the attribute in
88
- # question. If localization is used, the Strings should be localized
89
- # for the current locale. If no error is present, this method should
90
- # return an empty Array.
91
- describe "#[]" do
92
- it "should return an Array" do
93
- subject.errors[:hello].should be_an(Array)
94
- end
95
- end
96
-
97
- # Returns an Array of all error messages for the object. Each message
98
- # should contain information about the field, if applicable.
99
- describe "#full_messages" do
100
- it "should return an Array" do
101
- subject.errors.full_messages.should be_an(Array)
102
- end
10
+ ActiveModel::Lint::Tests.public_instance_methods.map{|m| m.to_s}.grep(/^test/).each do |m|
11
+ example m.gsub('_',' ') do
12
+ send m
103
13
  end
104
14
  end
15
+
16
+ let(:model) { subject }
17
+ end
18
+
19
+ specs_for(Document, EmbeddedDocument) do
20
+ define_class(:TestModel, described_class)
21
+ subject { TestModel.new }
22
+
23
+ it_should_behave_like "ActiveModel"
105
24
  end
106
25
  end
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+
3
+ module MongoModel
4
+ specs_for(Document, EmbeddedDocument) do
5
+ describe "generating attribute methods" do
6
+ define_class(:TestDocument, described_class) do
7
+ property :foo, String
8
+
9
+ def foo(a); "from method"; end
10
+ end
11
+
12
+ subject { TestDocument.new }
13
+
14
+ it "should not overwrite an existing method" do
15
+ subject.foo(1).should == "from method"
16
+ end
17
+
18
+ context "on a subclass" do
19
+ define_class(:SubDocument, :TestDocument)
20
+ subject { SubDocument.new }
21
+
22
+ it "should not overwrite methods defined on the superclass" do
23
+ subject.foo(1).should == "from method"
24
+ end
25
+ end
26
+
27
+ context "on a class with an included module" do
28
+ module TestModule
29
+ def foo(a); "from method"; end
30
+ end
31
+
32
+ it "should not overwrite methods defined on the included module" do
33
+ TestDocument.send(:include, TestModule)
34
+ subject.foo(1).should == "from method"
35
+ end
36
+ end
37
+
38
+ context "on a class with an included concern that defines the property" do
39
+ module TestConcern
40
+ extend ActiveSupport::Concern
41
+
42
+ included do
43
+ property :bar, String
44
+ end
45
+
46
+ def bar(a); "from concern"; end
47
+ end
48
+
49
+ context "the base class" do
50
+ it "should not overwrite methods defined within the concern" do
51
+ TestDocument.send(:include, TestConcern)
52
+ subject.bar(1).should == "from concern"
53
+ end
54
+ end
55
+
56
+ context "subclasses" do
57
+ define_class(:SubDocument, :TestDocument)
58
+ subject { SubDocument.new }
59
+
60
+ it "should not overwrite methods defined within the concern" do
61
+ SubDocument.send(:include, TestConcern)
62
+ subject.bar(1).should == "from concern"
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -212,6 +212,15 @@ module MongoModel
212
212
  subject.values_at(:another, :abc).should == [doc2, doc1]
213
213
  end
214
214
  end
215
+
216
+ describe "map from Date to String" do
217
+ let(:klass) { Map[Date => String] }
218
+ subject { klass.new(Date.civil(2009, 11, 15) => "Hello world") }
219
+
220
+ it "should cast key to String on #to_mongo" do
221
+ subject.to_mongo.should == { "2009/11/15" => "Hello world" }
222
+ end
223
+ end
215
224
  end
216
225
 
217
226
  specs_for(Document, EmbeddedDocument) do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongomodel
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 3
10
- version: 0.4.3
9
+ - 4
10
+ version: 0.4.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sam Pohlenz
@@ -15,10 +15,9 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-12-14 00:00:00 Z
18
+ date: 2012-01-28 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: activesupport
22
21
  prerelease: false
23
22
  requirement: &id001 !ruby/object:Gem::Requirement
24
23
  none: false
@@ -30,10 +29,10 @@ dependencies:
30
29
  - 3
31
30
  - 1
32
31
  version: "3.1"
33
- type: :runtime
34
32
  version_requirements: *id001
33
+ name: activesupport
34
+ type: :runtime
35
35
  - !ruby/object:Gem::Dependency
36
- name: activemodel
37
36
  prerelease: false
38
37
  requirement: &id002 !ruby/object:Gem::Requirement
39
38
  none: false
@@ -45,10 +44,10 @@ dependencies:
45
44
  - 3
46
45
  - 1
47
46
  version: "3.1"
48
- type: :runtime
49
47
  version_requirements: *id002
48
+ name: activemodel
49
+ type: :runtime
50
50
  - !ruby/object:Gem::Dependency
51
- name: mongo
52
51
  prerelease: false
53
52
  requirement: &id003 !ruby/object:Gem::Requirement
54
53
  none: false
@@ -60,10 +59,10 @@ dependencies:
60
59
  - 1
61
60
  - 5
62
61
  version: "1.5"
63
- type: :runtime
64
62
  version_requirements: *id003
63
+ name: mongo
64
+ type: :runtime
65
65
  - !ruby/object:Gem::Dependency
66
- name: will_paginate
67
66
  prerelease: false
68
67
  requirement: &id004 !ruby/object:Gem::Requirement
69
68
  none: false
@@ -76,10 +75,10 @@ dependencies:
76
75
  - 3
77
76
  - 15
78
77
  version: 2.3.15
79
- type: :runtime
80
78
  version_requirements: *id004
79
+ name: will_paginate
80
+ type: :runtime
81
81
  - !ruby/object:Gem::Dependency
82
- name: bundler
83
82
  prerelease: false
84
83
  requirement: &id005 !ruby/object:Gem::Requirement
85
84
  none: false
@@ -92,26 +91,25 @@ dependencies:
92
91
  - 0
93
92
  - 0
94
93
  version: 1.0.0
95
- type: :development
96
94
  version_requirements: *id005
95
+ name: bundler
96
+ type: :development
97
97
  - !ruby/object:Gem::Dependency
98
- name: rspec
99
98
  prerelease: false
100
99
  requirement: &id006 !ruby/object:Gem::Requirement
101
100
  none: false
102
101
  requirements:
103
102
  - - ~>
104
103
  - !ruby/object:Gem::Version
105
- hash: 23
104
+ hash: 19
106
105
  segments:
107
106
  - 2
108
- - 6
109
- - 0
110
- version: 2.6.0
111
- type: :development
107
+ - 8
108
+ version: "2.8"
112
109
  version_requirements: *id006
110
+ name: rspec
111
+ type: :development
113
112
  - !ruby/object:Gem::Dependency
114
- name: guard-rspec
115
113
  prerelease: false
116
114
  requirement: &id007 !ruby/object:Gem::Requirement
117
115
  none: false
@@ -124,8 +122,9 @@ dependencies:
124
122
  - 5
125
123
  - 0
126
124
  version: 0.5.0
127
- type: :development
128
125
  version_requirements: *id007
126
+ name: guard-rspec
127
+ type: :development
129
128
  description: MongoModel is a MongoDB ORM for Ruby/Rails similar to ActiveRecord and DataMapper.
130
129
  email:
131
130
  - sam@sampohlenz.com
@@ -145,9 +144,7 @@ files:
145
144
  - Rakefile
146
145
  - bin/console
147
146
  - gemfiles/rails-3.1.gemfile
148
- - gemfiles/rails-3.1.gemfile.lock
149
- - gemfiles/rails-edge.gemfile
150
- - gemfiles/rails-edge.gemfile.lock
147
+ - gemfiles/rails-3.2.gemfile
151
148
  - lib/mongomodel.rb
152
149
  - lib/mongomodel/attributes/mongo.rb
153
150
  - lib/mongomodel/attributes/store.rb
@@ -226,6 +223,7 @@ files:
226
223
  - lib/mongomodel/support/types/hash.rb
227
224
  - lib/mongomodel/support/types/integer.rb
228
225
  - lib/mongomodel/support/types/object.rb
226
+ - lib/mongomodel/support/types/openstruct.rb
229
227
  - lib/mongomodel/support/types/rational.rb
230
228
  - lib/mongomodel/support/types/set.rb
231
229
  - lib/mongomodel/support/types/string.rb
@@ -251,6 +249,7 @@ files:
251
249
  - spec/mongomodel/concerns/attribute_methods/query_spec.rb
252
250
  - spec/mongomodel/concerns/attribute_methods/read_spec.rb
253
251
  - spec/mongomodel/concerns/attribute_methods/write_spec.rb
252
+ - spec/mongomodel/concerns/attribute_methods_spec.rb
254
253
  - spec/mongomodel/concerns/attributes_spec.rb
255
254
  - spec/mongomodel/concerns/callbacks_spec.rb
256
255
  - spec/mongomodel/concerns/logging_spec.rb
@@ -325,10 +324,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
325
324
  requirements: []
326
325
 
327
326
  rubyforge_project: mongomodel
328
- rubygems_version: 1.8.6
327
+ rubygems_version: 1.8.10
329
328
  signing_key:
330
329
  specification_version: 3
331
330
  summary: MongoDB ORM for Ruby/Rails
332
331
  test_files: []
333
332
 
334
- has_rdoc:
@@ -1,62 +0,0 @@
1
- PATH
2
- remote: /Users/sam/Work/mongomodel
3
- specs:
4
- mongomodel (0.4.3)
5
- activemodel (~> 3.1)
6
- activesupport (~> 3.1)
7
- mongo (~> 1.5)
8
- will_paginate (~> 2.3.15)
9
-
10
- GEM
11
- remote: http://rubygems.org/
12
- specs:
13
- activemodel (3.1.0)
14
- activesupport (= 3.1.0)
15
- bcrypt-ruby (~> 3.0.0)
16
- builder (~> 3.0.0)
17
- i18n (~> 0.6)
18
- activesupport (3.1.0)
19
- multi_json (~> 1.0)
20
- appraisal (0.3.8)
21
- bundler
22
- rake
23
- bcrypt-ruby (3.0.1)
24
- bson (1.5.2)
25
- bson_ext (1.5.2)
26
- bson (= 1.5.2)
27
- builder (3.0.0)
28
- diff-lcs (1.1.3)
29
- guard (0.8.8)
30
- thor (~> 0.14.6)
31
- guard-rspec (0.5.9)
32
- guard (>= 0.8.4)
33
- i18n (0.6.0)
34
- mongo (1.5.2)
35
- bson (= 1.5.2)
36
- multi_json (1.0.4)
37
- rake (0.9.2.2)
38
- rspec (2.6.0)
39
- rspec-core (~> 2.6.0)
40
- rspec-expectations (~> 2.6.0)
41
- rspec-mocks (~> 2.6.0)
42
- rspec-core (2.6.4)
43
- rspec-expectations (2.6.0)
44
- diff-lcs (~> 1.1.2)
45
- rspec-mocks (2.6.0)
46
- thor (0.14.6)
47
- tzinfo (0.3.31)
48
- will_paginate (2.3.16)
49
-
50
- PLATFORMS
51
- ruby
52
-
53
- DEPENDENCIES
54
- activemodel (= 3.1.0)
55
- activesupport (= 3.1.0)
56
- appraisal (~> 0.3.6)
57
- bson_ext (~> 1.5)
58
- bundler (>= 1.0.0)
59
- guard-rspec (~> 0.5.0)
60
- mongomodel!
61
- rspec (~> 2.6.0)
62
- tzinfo
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "http://rubygems.org"
4
-
5
- gem "bson_ext", "~> 1.5"
6
- gem "tzinfo"
7
- gem "activemodel", :git=>"https://github.com/rails/rails.git"
8
- gem "activesupport", :git=>"https://github.com/rails/rails.git"
9
- gem "appraisal", "~> 0.3.6"
10
-
11
- gemspec :path=>"../"
@@ -1,66 +0,0 @@
1
- GIT
2
- remote: https://github.com/rails/rails.git
3
- revision: 38703ac8972c7e8f3f3f1ac95aa506cc4ae30ef0
4
- specs:
5
- activemodel (3.2.0.beta)
6
- activesupport (= 3.2.0.beta)
7
- builder (~> 3.0.0)
8
- i18n (~> 0.6)
9
- activesupport (3.2.0.beta)
10
- i18n (~> 0.6)
11
- multi_json (~> 1.0)
12
-
13
- PATH
14
- remote: /Users/sam/Work/mongomodel
15
- specs:
16
- mongomodel (0.4.3)
17
- activemodel (~> 3.1)
18
- activesupport (~> 3.1)
19
- mongo (~> 1.5)
20
- will_paginate (~> 2.3.15)
21
-
22
- GEM
23
- remote: http://rubygems.org/
24
- specs:
25
- appraisal (0.3.8)
26
- bundler
27
- rake
28
- bson (1.5.2)
29
- bson_ext (1.5.2)
30
- bson (= 1.5.2)
31
- builder (3.0.0)
32
- diff-lcs (1.1.3)
33
- guard (0.8.8)
34
- thor (~> 0.14.6)
35
- guard-rspec (0.5.9)
36
- guard (>= 0.8.4)
37
- i18n (0.6.0)
38
- mongo (1.5.2)
39
- bson (= 1.5.2)
40
- multi_json (1.0.4)
41
- rake (0.9.2.2)
42
- rspec (2.6.0)
43
- rspec-core (~> 2.6.0)
44
- rspec-expectations (~> 2.6.0)
45
- rspec-mocks (~> 2.6.0)
46
- rspec-core (2.6.4)
47
- rspec-expectations (2.6.0)
48
- diff-lcs (~> 1.1.2)
49
- rspec-mocks (2.6.0)
50
- thor (0.14.6)
51
- tzinfo (0.3.31)
52
- will_paginate (2.3.16)
53
-
54
- PLATFORMS
55
- ruby
56
-
57
- DEPENDENCIES
58
- activemodel!
59
- activesupport!
60
- appraisal (~> 0.3.6)
61
- bson_ext (~> 1.5)
62
- bundler (>= 1.0.0)
63
- guard-rspec (~> 0.5.0)
64
- mongomodel!
65
- rspec (~> 2.6.0)
66
- tzinfo