mongo_mapper-rails3 0.7.0.1

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.
Files changed (94) hide show
  1. data/.gitignore +10 -0
  2. data/Gemfile +15 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +60 -0
  5. data/Rakefile +58 -0
  6. data/VERSION +1 -0
  7. data/bin/mmconsole +60 -0
  8. data/lib/mongo_mapper.rb +131 -0
  9. data/lib/mongo_mapper/document.rb +439 -0
  10. data/lib/mongo_mapper/embedded_document.rb +68 -0
  11. data/lib/mongo_mapper/plugins.rb +30 -0
  12. data/lib/mongo_mapper/plugins/associations.rb +106 -0
  13. data/lib/mongo_mapper/plugins/associations/base.rb +123 -0
  14. data/lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb +30 -0
  15. data/lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb +25 -0
  16. data/lib/mongo_mapper/plugins/associations/collection.rb +21 -0
  17. data/lib/mongo_mapper/plugins/associations/embedded_collection.rb +50 -0
  18. data/lib/mongo_mapper/plugins/associations/in_array_proxy.rb +141 -0
  19. data/lib/mongo_mapper/plugins/associations/many_documents_as_proxy.rb +28 -0
  20. data/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb +120 -0
  21. data/lib/mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy.rb +31 -0
  22. data/lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb +23 -0
  23. data/lib/mongo_mapper/plugins/associations/many_polymorphic_proxy.rb +13 -0
  24. data/lib/mongo_mapper/plugins/associations/one_proxy.rb +68 -0
  25. data/lib/mongo_mapper/plugins/associations/proxy.rb +119 -0
  26. data/lib/mongo_mapper/plugins/callbacks.rb +87 -0
  27. data/lib/mongo_mapper/plugins/clone.rb +14 -0
  28. data/lib/mongo_mapper/plugins/descendants.rb +17 -0
  29. data/lib/mongo_mapper/plugins/dirty.rb +120 -0
  30. data/lib/mongo_mapper/plugins/equality.rb +24 -0
  31. data/lib/mongo_mapper/plugins/identity_map.rb +124 -0
  32. data/lib/mongo_mapper/plugins/inspect.rb +15 -0
  33. data/lib/mongo_mapper/plugins/keys.rb +310 -0
  34. data/lib/mongo_mapper/plugins/logger.rb +19 -0
  35. data/lib/mongo_mapper/plugins/pagination.rb +26 -0
  36. data/lib/mongo_mapper/plugins/pagination/proxy.rb +72 -0
  37. data/lib/mongo_mapper/plugins/protected.rb +46 -0
  38. data/lib/mongo_mapper/plugins/rails.rb +46 -0
  39. data/lib/mongo_mapper/plugins/serialization.rb +50 -0
  40. data/lib/mongo_mapper/plugins/validations.rb +88 -0
  41. data/lib/mongo_mapper/query.rb +130 -0
  42. data/lib/mongo_mapper/support.rb +217 -0
  43. data/lib/mongo_mapper/support/descendant_appends.rb +46 -0
  44. data/lib/mongo_mapper/support/find.rb +77 -0
  45. data/mongo_mapper-rails3.gemspec +208 -0
  46. data/performance/read_write.rb +52 -0
  47. data/specs.watchr +51 -0
  48. data/test/NOTE_ON_TESTING +1 -0
  49. data/test/functional/associations/test_belongs_to_polymorphic_proxy.rb +63 -0
  50. data/test/functional/associations/test_belongs_to_proxy.rb +101 -0
  51. data/test/functional/associations/test_in_array_proxy.rb +321 -0
  52. data/test/functional/associations/test_many_documents_as_proxy.rb +229 -0
  53. data/test/functional/associations/test_many_documents_proxy.rb +453 -0
  54. data/test/functional/associations/test_many_embedded_polymorphic_proxy.rb +176 -0
  55. data/test/functional/associations/test_many_embedded_proxy.rb +256 -0
  56. data/test/functional/associations/test_many_polymorphic_proxy.rb +302 -0
  57. data/test/functional/associations/test_one_proxy.rb +161 -0
  58. data/test/functional/test_associations.rb +44 -0
  59. data/test/functional/test_binary.rb +27 -0
  60. data/test/functional/test_callbacks.rb +81 -0
  61. data/test/functional/test_dirty.rb +163 -0
  62. data/test/functional/test_document.rb +1244 -0
  63. data/test/functional/test_embedded_document.rb +125 -0
  64. data/test/functional/test_identity_map.rb +508 -0
  65. data/test/functional/test_logger.rb +20 -0
  66. data/test/functional/test_modifiers.rb +252 -0
  67. data/test/functional/test_pagination.rb +93 -0
  68. data/test/functional/test_protected.rb +161 -0
  69. data/test/functional/test_string_id_compatibility.rb +67 -0
  70. data/test/functional/test_validations.rb +329 -0
  71. data/test/models.rb +232 -0
  72. data/test/support/custom_matchers.rb +55 -0
  73. data/test/support/timing.rb +16 -0
  74. data/test/test_helper.rb +59 -0
  75. data/test/unit/associations/test_base.rb +207 -0
  76. data/test/unit/associations/test_proxy.rb +105 -0
  77. data/test/unit/serializers/test_json_serializer.rb +189 -0
  78. data/test/unit/test_descendant_appends.rb +71 -0
  79. data/test/unit/test_document.rb +231 -0
  80. data/test/unit/test_dynamic_finder.rb +123 -0
  81. data/test/unit/test_embedded_document.rb +663 -0
  82. data/test/unit/test_keys.rb +169 -0
  83. data/test/unit/test_lint.rb +8 -0
  84. data/test/unit/test_mongo_mapper.rb +125 -0
  85. data/test/unit/test_pagination.rb +160 -0
  86. data/test/unit/test_plugins.rb +51 -0
  87. data/test/unit/test_query.rb +334 -0
  88. data/test/unit/test_rails.rb +123 -0
  89. data/test/unit/test_rails_compatibility.rb +57 -0
  90. data/test/unit/test_serialization.rb +51 -0
  91. data/test/unit/test_support.rb +362 -0
  92. data/test/unit/test_time_zones.rb +39 -0
  93. data/test/unit/test_validations.rb +557 -0
  94. metadata +344 -0
@@ -0,0 +1,217 @@
1
+ class Array
2
+ def self.to_mongo(value)
3
+ value = value.respond_to?(:lines) ? value.lines : value
4
+ value.to_a
5
+ end
6
+
7
+ def self.from_mongo(value)
8
+ value || []
9
+ end
10
+ end
11
+
12
+ class Binary
13
+ def self.to_mongo(value)
14
+ if value.is_a?(ByteBuffer)
15
+ value
16
+ else
17
+ value.nil? ? nil : ByteBuffer.new(value)
18
+ end
19
+ end
20
+
21
+ def self.from_mongo(value)
22
+ value
23
+ end
24
+ end
25
+
26
+ class Boolean
27
+ BOOLEAN_MAPPING = {
28
+ true => true, 'true' => true, 'TRUE' => true, 'True' => true, 't' => true, 'T' => true, '1' => true, 1 => true, 1.0 => true,
29
+ false => false, 'false' => false, 'FALSE' => false, 'False' => false, 'f' => false, 'F' => false, '0' => false, 0 => false, 0.0 => false, nil => false
30
+ }
31
+
32
+ def self.to_mongo(value)
33
+ if value.is_a?(Boolean)
34
+ value
35
+ else
36
+ v = BOOLEAN_MAPPING[value]
37
+ v = value.to_s.downcase == 'true' if v.nil? # Check all mixed case spellings for true
38
+ v
39
+ end
40
+ end
41
+
42
+ def self.from_mongo(value)
43
+ !!value
44
+ end
45
+ end
46
+
47
+ class Date
48
+ def self.to_mongo(value)
49
+ if value.nil? || value == ''
50
+ nil
51
+ else
52
+ date = value.is_a?(Date) || value.is_a?(Time) ? value : Date.parse(value.to_s)
53
+ Time.utc(date.year, date.month, date.day)
54
+ end
55
+ rescue
56
+ nil
57
+ end
58
+
59
+ def self.from_mongo(value)
60
+ value.to_date if value.present?
61
+ end
62
+ end
63
+
64
+ class Float
65
+ def self.to_mongo(value)
66
+ value.to_f
67
+ end
68
+ end
69
+
70
+ class Hash
71
+ def self.from_mongo(value)
72
+ HashWithIndifferentAccess.new(value || {})
73
+ end
74
+
75
+ def to_mongo
76
+ self
77
+ end
78
+ end
79
+
80
+ class Integer
81
+ def self.to_mongo(value)
82
+ value_to_i = value.to_i
83
+ if value_to_i == 0 && value != value_to_i
84
+ value.to_s =~ /^(0x|0b)?0+/ ? 0 : nil
85
+ else
86
+ value_to_i
87
+ end
88
+ end
89
+ end
90
+
91
+ class NilClass
92
+ def to_mongo(value)
93
+ value
94
+ end
95
+
96
+ def from_mongo(value)
97
+ value
98
+ end
99
+ end
100
+
101
+ class Object
102
+ # The hidden singleton lurks behind everyone
103
+ def metaclass
104
+ class << self; self end
105
+ end
106
+
107
+ def meta_eval(&blk)
108
+ metaclass.instance_eval(&blk)
109
+ end
110
+
111
+ # Adds methods to a metaclass
112
+ def meta_def(name, &blk)
113
+ meta_eval { define_method(name, &blk) }
114
+ end
115
+
116
+ # Defines an instance method within a class
117
+ def class_def(name, &blk)
118
+ class_eval { define_method(name, &blk) }
119
+ end
120
+
121
+ def self.to_mongo(value)
122
+ value
123
+ end
124
+
125
+ def self.from_mongo(value)
126
+ value
127
+ end
128
+ end
129
+
130
+ class ObjectId
131
+ def self.to_mongo(value)
132
+ if value.blank?
133
+ nil
134
+ elsif value.is_a?(Mongo::ObjectID)
135
+ value
136
+ elsif value.is_a?(Hash)
137
+ Mongo::ObjectID.new(value['data'])
138
+ else
139
+ Mongo::ObjectID.from_string(value.to_s)
140
+ end
141
+ end
142
+
143
+ def self.from_mongo(value)
144
+ value
145
+ end
146
+ end
147
+
148
+ class Set
149
+ def self.to_mongo(value)
150
+ value.to_a
151
+ end
152
+
153
+ def self.from_mongo(value)
154
+ Set.new(value || [])
155
+ end
156
+ end
157
+
158
+ class String
159
+ def self.to_mongo(value)
160
+ value.nil? ? nil : value.to_s
161
+ end
162
+
163
+ def self.from_mongo(value)
164
+ value.nil? ? nil : value.to_s
165
+ end
166
+ end
167
+
168
+ class SymbolOperator
169
+ attr_reader :field, :operator
170
+
171
+ def initialize(field, operator, options={})
172
+ @field, @operator = field, operator
173
+ end unless method_defined?(:initialize)
174
+ end
175
+
176
+ class Symbol
177
+ %w(gt lt gte lte ne in nin mod all size where exists asc desc).each do |operator|
178
+ define_method(operator) do
179
+ SymbolOperator.new(self, operator)
180
+ end unless method_defined?(operator)
181
+ end
182
+ end
183
+
184
+ class Time
185
+ def self.to_mongo(value)
186
+ if value.nil? || value == ''
187
+ nil
188
+ else
189
+ time = value.is_a?(Time) ? value : MongoMapper.time_class.parse(value.to_s)
190
+ # Convert time to milliseconds since BSON stores dates with that accurracy, but Ruby uses microseconds
191
+ Time.at((time.to_f * 1000).round / 1000.0).utc if time
192
+ end
193
+ end
194
+
195
+ def self.from_mongo(value)
196
+ if MongoMapper.use_time_zone? && value.present?
197
+ value.in_time_zone(Time.zone)
198
+ else
199
+ value
200
+ end
201
+ end
202
+ end
203
+
204
+ class Mongo::ObjectID
205
+ alias_method :original_to_json, :to_json
206
+
207
+ def to_json(options = nil)
208
+ %Q("#{to_s}")
209
+ end
210
+ end
211
+
212
+ module MongoMapper
213
+ module Support
214
+ autoload :DescendantAppends, 'mongo_mapper/support/descendant_appends'
215
+ autoload :Find, 'mongo_mapper/support/find'
216
+ end
217
+ end
@@ -0,0 +1,46 @@
1
+ module MongoMapper
2
+ module Support
3
+ module DescendantAppends
4
+ def included(model)
5
+ extra_extensions.each { |extension| model.extend(extension) }
6
+ extra_inclusions.each { |inclusion| model.send(:include, inclusion) }
7
+ descendants << model
8
+ end
9
+
10
+ # @api public
11
+ def descendants
12
+ @descendants ||= Set.new
13
+ end
14
+
15
+ # @api public
16
+ def append_extensions(*extensions)
17
+ extra_extensions.concat extensions
18
+
19
+ # Add the extension to existing descendants
20
+ descendants.each do |model|
21
+ extensions.each { |extension| model.extend(extension) }
22
+ end
23
+ end
24
+
25
+ # @api public
26
+ def append_inclusions(*inclusions)
27
+ extra_inclusions.concat inclusions
28
+
29
+ # Add the inclusion to existing descendants
30
+ descendants.each do |model|
31
+ inclusions.each { |inclusion| model.send(:include, inclusion) }
32
+ end
33
+ end
34
+
35
+ # @api private
36
+ def extra_extensions
37
+ @extra_extensions ||= []
38
+ end
39
+
40
+ # @api private
41
+ def extra_inclusions
42
+ @extra_inclusions ||= []
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,77 @@
1
+ module MongoMapper
2
+ module Support
3
+ # @api private
4
+ module Find
5
+ def dynamic_find(finder, args)
6
+ attributes = {}
7
+
8
+ finder.attributes.each_with_index do |attr, index|
9
+ attributes[attr] = args[index]
10
+ end
11
+
12
+ options = args.extract_options!.merge(attributes)
13
+
14
+ if result = send(finder.finder, options)
15
+ result
16
+ else
17
+ if finder.raise?
18
+ raise DocumentNotFound, "Couldn't find Document with #{attributes.inspect} in collection named #{collection.name}"
19
+ end
20
+
21
+ if finder.instantiator
22
+ self.send(finder.instantiator, attributes)
23
+ end
24
+ end
25
+ end
26
+
27
+ class DynamicFinder
28
+ attr_reader :method, :attributes, :finder, :bang, :instantiator
29
+
30
+ def initialize(method)
31
+ @method = method
32
+ @finder = :first
33
+ @bang = false
34
+ match
35
+ end
36
+
37
+ def found?
38
+ @finder.present?
39
+ end
40
+
41
+ def raise?
42
+ bang == true
43
+ end
44
+
45
+ protected
46
+ def match
47
+ case method.to_s
48
+ when /^find_(all_by|by)_([_a-zA-Z]\w*)$/
49
+ @finder = :all if $1 == 'all_by'
50
+ names = $2
51
+ when /^find_by_([_a-zA-Z]\w*)\!$/
52
+ @bang = true
53
+ names = $1
54
+ when /^find_or_(initialize|create)_by_([_a-zA-Z]\w*)$/
55
+ @instantiator = $1 == 'initialize' ? :new : :create
56
+ names = $2
57
+ else
58
+ @finder = nil
59
+ end
60
+
61
+ @attributes = names && names.split('_and_')
62
+ end
63
+ end
64
+
65
+ protected
66
+ def method_missing(method, *args, &block)
67
+ finder = DynamicFinder.new(method)
68
+
69
+ if finder.found?
70
+ dynamic_find(finder, args)
71
+ else
72
+ super
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,208 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{mongo_mapper-rails3}
8
+ s.version = "0.7.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Mike Harris", "Paul Bowsher", "Jacques Crocker", "John Nunemaker"]
12
+ s.date = %q{2010-03-01}
13
+ s.default_executable = %q{mmconsole}
14
+ s.email = %q{merbjedi@gmail.com}
15
+ s.executables = ["mmconsole"]
16
+ s.extra_rdoc_files = [
17
+ "LICENSE",
18
+ "README.rdoc"
19
+ ]
20
+ s.files = [
21
+ ".gitignore",
22
+ "Gemfile",
23
+ "LICENSE",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "bin/mmconsole",
28
+ "lib/mongo_mapper.rb",
29
+ "lib/mongo_mapper/document.rb",
30
+ "lib/mongo_mapper/embedded_document.rb",
31
+ "lib/mongo_mapper/plugins.rb",
32
+ "lib/mongo_mapper/plugins/associations.rb",
33
+ "lib/mongo_mapper/plugins/associations/base.rb",
34
+ "lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb",
35
+ "lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb",
36
+ "lib/mongo_mapper/plugins/associations/collection.rb",
37
+ "lib/mongo_mapper/plugins/associations/embedded_collection.rb",
38
+ "lib/mongo_mapper/plugins/associations/in_array_proxy.rb",
39
+ "lib/mongo_mapper/plugins/associations/many_documents_as_proxy.rb",
40
+ "lib/mongo_mapper/plugins/associations/many_documents_proxy.rb",
41
+ "lib/mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy.rb",
42
+ "lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb",
43
+ "lib/mongo_mapper/plugins/associations/many_polymorphic_proxy.rb",
44
+ "lib/mongo_mapper/plugins/associations/one_proxy.rb",
45
+ "lib/mongo_mapper/plugins/associations/proxy.rb",
46
+ "lib/mongo_mapper/plugins/callbacks.rb",
47
+ "lib/mongo_mapper/plugins/clone.rb",
48
+ "lib/mongo_mapper/plugins/descendants.rb",
49
+ "lib/mongo_mapper/plugins/dirty.rb",
50
+ "lib/mongo_mapper/plugins/equality.rb",
51
+ "lib/mongo_mapper/plugins/identity_map.rb",
52
+ "lib/mongo_mapper/plugins/inspect.rb",
53
+ "lib/mongo_mapper/plugins/keys.rb",
54
+ "lib/mongo_mapper/plugins/logger.rb",
55
+ "lib/mongo_mapper/plugins/pagination.rb",
56
+ "lib/mongo_mapper/plugins/pagination/proxy.rb",
57
+ "lib/mongo_mapper/plugins/protected.rb",
58
+ "lib/mongo_mapper/plugins/rails.rb",
59
+ "lib/mongo_mapper/plugins/serialization.rb",
60
+ "lib/mongo_mapper/plugins/validations.rb",
61
+ "lib/mongo_mapper/query.rb",
62
+ "lib/mongo_mapper/support.rb",
63
+ "lib/mongo_mapper/support/descendant_appends.rb",
64
+ "lib/mongo_mapper/support/find.rb",
65
+ "mongo_mapper-rails3.gemspec",
66
+ "performance/read_write.rb",
67
+ "specs.watchr",
68
+ "test/NOTE_ON_TESTING",
69
+ "test/functional/associations/test_belongs_to_polymorphic_proxy.rb",
70
+ "test/functional/associations/test_belongs_to_proxy.rb",
71
+ "test/functional/associations/test_in_array_proxy.rb",
72
+ "test/functional/associations/test_many_documents_as_proxy.rb",
73
+ "test/functional/associations/test_many_documents_proxy.rb",
74
+ "test/functional/associations/test_many_embedded_polymorphic_proxy.rb",
75
+ "test/functional/associations/test_many_embedded_proxy.rb",
76
+ "test/functional/associations/test_many_polymorphic_proxy.rb",
77
+ "test/functional/associations/test_one_proxy.rb",
78
+ "test/functional/test_associations.rb",
79
+ "test/functional/test_binary.rb",
80
+ "test/functional/test_callbacks.rb",
81
+ "test/functional/test_dirty.rb",
82
+ "test/functional/test_document.rb",
83
+ "test/functional/test_embedded_document.rb",
84
+ "test/functional/test_identity_map.rb",
85
+ "test/functional/test_logger.rb",
86
+ "test/functional/test_modifiers.rb",
87
+ "test/functional/test_pagination.rb",
88
+ "test/functional/test_protected.rb",
89
+ "test/functional/test_string_id_compatibility.rb",
90
+ "test/functional/test_validations.rb",
91
+ "test/models.rb",
92
+ "test/support/custom_matchers.rb",
93
+ "test/support/timing.rb",
94
+ "test/test_helper.rb",
95
+ "test/unit/associations/test_base.rb",
96
+ "test/unit/associations/test_proxy.rb",
97
+ "test/unit/serializers/test_json_serializer.rb",
98
+ "test/unit/test_descendant_appends.rb",
99
+ "test/unit/test_document.rb",
100
+ "test/unit/test_dynamic_finder.rb",
101
+ "test/unit/test_embedded_document.rb",
102
+ "test/unit/test_keys.rb",
103
+ "test/unit/test_lint.rb",
104
+ "test/unit/test_mongo_mapper.rb",
105
+ "test/unit/test_pagination.rb",
106
+ "test/unit/test_plugins.rb",
107
+ "test/unit/test_query.rb",
108
+ "test/unit/test_rails.rb",
109
+ "test/unit/test_rails_compatibility.rb",
110
+ "test/unit/test_serialization.rb",
111
+ "test/unit/test_support.rb",
112
+ "test/unit/test_time_zones.rb",
113
+ "test/unit/test_validations.rb"
114
+ ]
115
+ s.homepage = %q{http://github.com/merbjedi/mongomapper}
116
+ s.rdoc_options = ["--charset=UTF-8"]
117
+ s.require_paths = ["lib"]
118
+ s.rubygems_version = %q{1.3.6}
119
+ s.summary = %q{Rails3 / ActiveModel compatible fork of MongoMapper.}
120
+ s.test_files = [
121
+ "test/functional/associations/test_belongs_to_polymorphic_proxy.rb",
122
+ "test/functional/associations/test_belongs_to_proxy.rb",
123
+ "test/functional/associations/test_in_array_proxy.rb",
124
+ "test/functional/associations/test_many_documents_as_proxy.rb",
125
+ "test/functional/associations/test_many_documents_proxy.rb",
126
+ "test/functional/associations/test_many_embedded_polymorphic_proxy.rb",
127
+ "test/functional/associations/test_many_embedded_proxy.rb",
128
+ "test/functional/associations/test_many_polymorphic_proxy.rb",
129
+ "test/functional/associations/test_one_proxy.rb",
130
+ "test/functional/test_associations.rb",
131
+ "test/functional/test_binary.rb",
132
+ "test/functional/test_callbacks.rb",
133
+ "test/functional/test_dirty.rb",
134
+ "test/functional/test_document.rb",
135
+ "test/functional/test_embedded_document.rb",
136
+ "test/functional/test_identity_map.rb",
137
+ "test/functional/test_logger.rb",
138
+ "test/functional/test_modifiers.rb",
139
+ "test/functional/test_pagination.rb",
140
+ "test/functional/test_protected.rb",
141
+ "test/functional/test_string_id_compatibility.rb",
142
+ "test/functional/test_validations.rb",
143
+ "test/models.rb",
144
+ "test/support/custom_matchers.rb",
145
+ "test/support/timing.rb",
146
+ "test/test_helper.rb",
147
+ "test/unit/associations/test_base.rb",
148
+ "test/unit/associations/test_proxy.rb",
149
+ "test/unit/serializers/test_json_serializer.rb",
150
+ "test/unit/test_descendant_appends.rb",
151
+ "test/unit/test_document.rb",
152
+ "test/unit/test_dynamic_finder.rb",
153
+ "test/unit/test_embedded_document.rb",
154
+ "test/unit/test_keys.rb",
155
+ "test/unit/test_lint.rb",
156
+ "test/unit/test_mongo_mapper.rb",
157
+ "test/unit/test_pagination.rb",
158
+ "test/unit/test_plugins.rb",
159
+ "test/unit/test_query.rb",
160
+ "test/unit/test_rails.rb",
161
+ "test/unit/test_rails_compatibility.rb",
162
+ "test/unit/test_serialization.rb",
163
+ "test/unit/test_support.rb",
164
+ "test/unit/test_time_zones.rb",
165
+ "test/unit/test_validations.rb"
166
+ ]
167
+
168
+ if s.respond_to? :specification_version then
169
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
170
+ s.specification_version = 3
171
+
172
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
173
+ s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0.beta"])
174
+ s.add_runtime_dependency(%q<activemodel>, [">= 3.0.0.beta"])
175
+ s.add_runtime_dependency(%q<bundler>, [">= 0.9.7"])
176
+ s.add_runtime_dependency(%q<mongo>, [">= 0.18.3"])
177
+ s.add_development_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
178
+ s.add_development_dependency(%q<shoulda>, ["= 2.10.2"])
179
+ s.add_development_dependency(%q<timecop>, ["= 0.3.1"])
180
+ s.add_development_dependency(%q<mocha>, ["= 0.9.8"])
181
+ s.add_development_dependency(%q<yard>, [">= 0.5.3"])
182
+ s.add_development_dependency(%q<jeweler>, [">= 1.4.0"])
183
+ else
184
+ s.add_dependency(%q<activesupport>, [">= 3.0.0.beta"])
185
+ s.add_dependency(%q<activemodel>, [">= 3.0.0.beta"])
186
+ s.add_dependency(%q<bundler>, [">= 0.9.7"])
187
+ s.add_dependency(%q<mongo>, [">= 0.18.3"])
188
+ s.add_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
189
+ s.add_dependency(%q<shoulda>, ["= 2.10.2"])
190
+ s.add_dependency(%q<timecop>, ["= 0.3.1"])
191
+ s.add_dependency(%q<mocha>, ["= 0.9.8"])
192
+ s.add_dependency(%q<yard>, [">= 0.5.3"])
193
+ s.add_dependency(%q<jeweler>, [">= 1.4.0"])
194
+ end
195
+ else
196
+ s.add_dependency(%q<activesupport>, [">= 3.0.0.beta"])
197
+ s.add_dependency(%q<activemodel>, [">= 3.0.0.beta"])
198
+ s.add_dependency(%q<bundler>, [">= 0.9.7"])
199
+ s.add_dependency(%q<mongo>, [">= 0.18.3"])
200
+ s.add_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
201
+ s.add_dependency(%q<shoulda>, ["= 2.10.2"])
202
+ s.add_dependency(%q<timecop>, ["= 0.3.1"])
203
+ s.add_dependency(%q<mocha>, ["= 0.9.8"])
204
+ s.add_dependency(%q<yard>, [">= 0.5.3"])
205
+ s.add_dependency(%q<jeweler>, [">= 1.4.0"])
206
+ end
207
+ end
208
+