mongo_mapper 0.15.3 → 0.15.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -6
  3. data/lib/mongo_mapper/connection.rb +1 -1
  4. data/lib/mongo_mapper/document.rb +1 -0
  5. data/lib/mongo_mapper/extensions/array.rb +1 -1
  6. data/lib/mongo_mapper/extensions/binary.rb +1 -1
  7. data/lib/mongo_mapper/extensions/date.rb +1 -1
  8. data/lib/mongo_mapper/extensions/float.rb +1 -1
  9. data/lib/mongo_mapper/extensions/hash.rb +1 -1
  10. data/lib/mongo_mapper/extensions/nil_class.rb +2 -2
  11. data/lib/mongo_mapper/extensions/object.rb +1 -1
  12. data/lib/mongo_mapper/extensions/object_id.rb +1 -1
  13. data/lib/mongo_mapper/extensions/set.rb +1 -1
  14. data/lib/mongo_mapper/extensions/string.rb +1 -1
  15. data/lib/mongo_mapper/plugins/associations/many_association.rb +2 -3
  16. data/lib/mongo_mapper/plugins/associations/{belongs_to_polymorphic_proxy.rb → proxy/belongs_to_polymorphic_proxy.rb} +0 -0
  17. data/lib/mongo_mapper/plugins/associations/{belongs_to_proxy.rb → proxy/belongs_to_proxy.rb} +0 -0
  18. data/lib/mongo_mapper/plugins/associations/proxy/collection.rb +55 -0
  19. data/lib/mongo_mapper/plugins/associations/{embedded_collection.rb → proxy/embedded_collection.rb} +0 -0
  20. data/lib/mongo_mapper/plugins/associations/{in_array_proxy.rb → proxy/in_array_proxy.rb} +0 -0
  21. data/lib/mongo_mapper/plugins/associations/{in_foreign_array_proxy.rb → proxy/in_foreign_array_proxy.rb} +0 -0
  22. data/lib/mongo_mapper/plugins/associations/{many_documents_as_proxy.rb → proxy/many_documents_as_proxy.rb} +0 -0
  23. data/lib/mongo_mapper/plugins/associations/{many_documents_proxy.rb → proxy/many_documents_proxy.rb} +0 -4
  24. data/lib/mongo_mapper/plugins/associations/{many_embedded_polymorphic_proxy.rb → proxy/many_embedded_polymorphic_proxy.rb} +0 -0
  25. data/lib/mongo_mapper/plugins/associations/{many_embedded_proxy.rb → proxy/many_embedded_proxy.rb} +0 -0
  26. data/lib/mongo_mapper/plugins/associations/{many_polymorphic_proxy.rb → proxy/many_polymorphic_proxy.rb} +0 -0
  27. data/lib/mongo_mapper/plugins/associations/{one_as_proxy.rb → proxy/one_as_proxy.rb} +0 -0
  28. data/lib/mongo_mapper/plugins/associations/{one_embedded_polymorphic_proxy.rb → proxy/one_embedded_polymorphic_proxy.rb} +0 -0
  29. data/lib/mongo_mapper/plugins/associations/{one_embedded_proxy.rb → proxy/one_embedded_proxy.rb} +0 -0
  30. data/lib/mongo_mapper/plugins/associations/{one_proxy.rb → proxy/one_proxy.rb} +0 -0
  31. data/lib/mongo_mapper/plugins/associations/{proxy.rb → proxy/proxy.rb} +64 -48
  32. data/lib/mongo_mapper/plugins/associations/single_association.rb +2 -11
  33. data/lib/mongo_mapper/plugins/caching.rb +2 -2
  34. data/lib/mongo_mapper/plugins/dirty.rb +1 -1
  35. data/lib/mongo_mapper/plugins/embedded_callbacks.rb +2 -2
  36. data/lib/mongo_mapper/plugins/keys/key.rb +9 -6
  37. data/lib/mongo_mapper/plugins/keys.rb +14 -2
  38. data/lib/mongo_mapper/plugins/querying.rb +2 -2
  39. data/lib/mongo_mapper/plugins/shardable.rb +30 -0
  40. data/lib/mongo_mapper/plugins/validations.rb +1 -1
  41. data/lib/mongo_mapper/plugins.rb +18 -1
  42. data/lib/mongo_mapper/version.rb +1 -1
  43. data/lib/mongo_mapper.rb +18 -18
  44. data/spec/examples.txt +1711 -1701
  45. data/spec/functional/callbacks_spec.rb +5 -1
  46. data/spec/functional/keys_spec.rb +13 -0
  47. data/spec/functional/shardable_spec.rb +59 -0
  48. data/spec/support/sharded_model.rb +24 -0
  49. data/spec/unit/associations/proxy_spec.rb +18 -5
  50. data/spec/unit/document_spec.rb +1 -1
  51. data/spec/unit/embedded_document_spec.rb +3 -3
  52. data/spec/unit/extensions_spec.rb +9 -3
  53. data/spec/unit/inspect_spec.rb +1 -1
  54. data/spec/unit/key_spec.rb +7 -1
  55. data/spec/unit/mongo_mapper_spec.rb +10 -5
  56. metadata +36 -19
  57. data/lib/mongo_mapper/plugins/associations/collection.rb +0 -29
@@ -1,7 +1,15 @@
1
1
  # encoding: UTF-8
2
2
  module MongoMapper
3
3
  module Plugins
4
- include ActiveSupport::DescendantsTracker
4
+ if defined?(ActiveSupport::DescendantsTracker::DescendantsArray)
5
+ DescendantsArray = ::ActiveSupport::DescendantsTracker::DescendantsArray
6
+ else
7
+ DescendantsArray = ::Array
8
+ end
9
+
10
+ def self.direct_descendants_hash
11
+ @direct_descendants_hash ||= Hash.new { |h,k| h[k] = DescendantsArray.new }
12
+ end
5
13
 
6
14
  def plugins
7
15
  @plugins ||= []
@@ -14,9 +22,18 @@ module MongoMapper
14
22
  plugins << mod
15
23
  end
16
24
 
25
+ def direct_descendants
26
+ Plugins.direct_descendants_hash[self]
27
+ end
28
+
17
29
  def included(base = nil)
18
30
  direct_descendants << base if base
19
31
  super
20
32
  end
33
+
34
+ def inherited(subclass)
35
+ direct_descendants << subclass
36
+ super
37
+ end
21
38
  end
22
39
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module MongoMapper
3
- Version = '0.15.3'
3
+ Version = '0.15.6'
4
4
  end
data/lib/mongo_mapper.rb CHANGED
@@ -60,6 +60,7 @@ module MongoMapper
60
60
  autoload :Safe, 'mongo_mapper/plugins/safe'
61
61
  autoload :Sci, 'mongo_mapper/plugins/sci'
62
62
  autoload :Scopes, 'mongo_mapper/plugins/scopes'
63
+ autoload :Shardable, 'mongo_mapper/plugins/shardable'
63
64
  autoload :Serialization, 'mongo_mapper/plugins/serialization'
64
65
  autoload :Stats, 'mongo_mapper/plugins/stats'
65
66
  autoload :StrongParameters, 'mongo_mapper/plugins/strong_parameters'
@@ -70,25 +71,27 @@ module MongoMapper
70
71
 
71
72
  module Associations
72
73
  autoload :Base, 'mongo_mapper/plugins/associations/base'
73
- autoload :Collection, 'mongo_mapper/plugins/associations/collection'
74
- autoload :EmbeddedCollection, 'mongo_mapper/plugins/associations/embedded_collection'
75
74
  autoload :ManyAssociation, 'mongo_mapper/plugins/associations/many_association'
76
75
  autoload :SingleAssociation, 'mongo_mapper/plugins/associations/single_association'
77
76
  autoload :BelongsToAssociation, 'mongo_mapper/plugins/associations/belongs_to_association'
78
77
  autoload :OneAssociation, 'mongo_mapper/plugins/associations/one_association'
79
- autoload :ManyDocumentsProxy, 'mongo_mapper/plugins/associations/many_documents_proxy'
80
- autoload :BelongsToProxy, 'mongo_mapper/plugins/associations/belongs_to_proxy'
81
- autoload :BelongsToPolymorphicProxy, 'mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy'
82
- autoload :ManyPolymorphicProxy, 'mongo_mapper/plugins/associations/many_polymorphic_proxy'
83
- autoload :ManyEmbeddedProxy, 'mongo_mapper/plugins/associations/many_embedded_proxy'
84
- autoload :ManyEmbeddedPolymorphicProxy, 'mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy'
85
- autoload :ManyDocumentsAsProxy, 'mongo_mapper/plugins/associations/many_documents_as_proxy'
86
- autoload :OneProxy, 'mongo_mapper/plugins/associations/one_proxy'
87
- autoload :OneAsProxy, 'mongo_mapper/plugins/associations/one_as_proxy'
88
- autoload :OneEmbeddedProxy, 'mongo_mapper/plugins/associations/one_embedded_proxy'
89
- autoload :OneEmbeddedPolymorphicProxy, 'mongo_mapper/plugins/associations/one_embedded_polymorphic_proxy'
90
- autoload :InArrayProxy, 'mongo_mapper/plugins/associations/in_array_proxy'
91
- autoload :InForeignArrayProxy, 'mongo_mapper/plugins/associations/in_foreign_array_proxy'
78
+
79
+ autoload :Proxy, 'mongo_mapper/plugins/associations/proxy/proxy'
80
+ autoload :Collection, 'mongo_mapper/plugins/associations/proxy/collection'
81
+ autoload :EmbeddedCollection, 'mongo_mapper/plugins/associations/proxy/embedded_collection'
82
+ autoload :ManyDocumentsProxy, 'mongo_mapper/plugins/associations/proxy/many_documents_proxy'
83
+ autoload :BelongsToProxy, 'mongo_mapper/plugins/associations/proxy/belongs_to_proxy'
84
+ autoload :BelongsToPolymorphicProxy, 'mongo_mapper/plugins/associations/proxy/belongs_to_polymorphic_proxy'
85
+ autoload :ManyPolymorphicProxy, 'mongo_mapper/plugins/associations/proxy/many_polymorphic_proxy'
86
+ autoload :ManyEmbeddedProxy, 'mongo_mapper/plugins/associations/proxy/many_embedded_proxy'
87
+ autoload :ManyEmbeddedPolymorphicProxy, 'mongo_mapper/plugins/associations/proxy/many_embedded_polymorphic_proxy'
88
+ autoload :ManyDocumentsAsProxy, 'mongo_mapper/plugins/associations/proxy/many_documents_as_proxy'
89
+ autoload :OneProxy, 'mongo_mapper/plugins/associations/proxy/one_proxy'
90
+ autoload :OneAsProxy, 'mongo_mapper/plugins/associations/proxy/one_as_proxy'
91
+ autoload :OneEmbeddedProxy, 'mongo_mapper/plugins/associations/proxy/one_embedded_proxy'
92
+ autoload :OneEmbeddedPolymorphicProxy, 'mongo_mapper/plugins/associations/proxy/one_embedded_polymorphic_proxy'
93
+ autoload :InArrayProxy, 'mongo_mapper/plugins/associations/proxy/in_array_proxy'
94
+ autoload :InForeignArrayProxy, 'mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy'
92
95
  end
93
96
  end
94
97
 
@@ -99,7 +102,4 @@ Dir[File.join(File.dirname(__FILE__), 'mongo_mapper', 'extensions', '*.rb')].eac
99
102
  require extension
100
103
  end
101
104
 
102
- # FIXME: autoload with proxy is failing, need to investigate
103
- require 'mongo_mapper/plugins/associations/proxy'
104
-
105
105
  ActiveSupport.run_load_hooks(:mongo_mapper, MongoMapper)