mongoid-braxton 2.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.
Files changed (226) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +50 -0
  3. data/Rakefile +51 -0
  4. data/lib/config/locales/bg.yml +41 -0
  5. data/lib/config/locales/de.yml +41 -0
  6. data/lib/config/locales/en.yml +45 -0
  7. data/lib/config/locales/es.yml +41 -0
  8. data/lib/config/locales/fr.yml +42 -0
  9. data/lib/config/locales/hu.yml +44 -0
  10. data/lib/config/locales/id.yml +46 -0
  11. data/lib/config/locales/it.yml +39 -0
  12. data/lib/config/locales/ja.yml +40 -0
  13. data/lib/config/locales/kr.yml +65 -0
  14. data/lib/config/locales/nl.yml +39 -0
  15. data/lib/config/locales/pl.yml +39 -0
  16. data/lib/config/locales/pt-BR.yml +40 -0
  17. data/lib/config/locales/pt.yml +40 -0
  18. data/lib/config/locales/ro.yml +46 -0
  19. data/lib/config/locales/ru.yml +41 -0
  20. data/lib/config/locales/sv.yml +40 -0
  21. data/lib/config/locales/vi.yml +45 -0
  22. data/lib/config/locales/zh-CN.yml +33 -0
  23. data/lib/mongoid.rb +140 -0
  24. data/lib/mongoid/atomicity.rb +111 -0
  25. data/lib/mongoid/attributes.rb +185 -0
  26. data/lib/mongoid/attributes/processing.rb +145 -0
  27. data/lib/mongoid/callbacks.rb +23 -0
  28. data/lib/mongoid/collection.rb +137 -0
  29. data/lib/mongoid/collections.rb +71 -0
  30. data/lib/mongoid/collections/master.rb +37 -0
  31. data/lib/mongoid/collections/operations.rb +42 -0
  32. data/lib/mongoid/collections/retry.rb +39 -0
  33. data/lib/mongoid/components.rb +45 -0
  34. data/lib/mongoid/config.rb +349 -0
  35. data/lib/mongoid/config/database.rb +167 -0
  36. data/lib/mongoid/config/replset_database.rb +78 -0
  37. data/lib/mongoid/contexts.rb +19 -0
  38. data/lib/mongoid/contexts/enumerable.rb +275 -0
  39. data/lib/mongoid/contexts/enumerable/sort.rb +43 -0
  40. data/lib/mongoid/contexts/mongo.rb +345 -0
  41. data/lib/mongoid/copyable.rb +46 -0
  42. data/lib/mongoid/criteria.rb +357 -0
  43. data/lib/mongoid/criterion/builder.rb +34 -0
  44. data/lib/mongoid/criterion/complex.rb +34 -0
  45. data/lib/mongoid/criterion/creational.rb +34 -0
  46. data/lib/mongoid/criterion/exclusion.rb +108 -0
  47. data/lib/mongoid/criterion/inclusion.rb +198 -0
  48. data/lib/mongoid/criterion/inspection.rb +22 -0
  49. data/lib/mongoid/criterion/optional.rb +193 -0
  50. data/lib/mongoid/criterion/selector.rb +143 -0
  51. data/lib/mongoid/criterion/unconvertable.rb +20 -0
  52. data/lib/mongoid/cursor.rb +86 -0
  53. data/lib/mongoid/default_scope.rb +36 -0
  54. data/lib/mongoid/dirty.rb +253 -0
  55. data/lib/mongoid/document.rb +284 -0
  56. data/lib/mongoid/errors.rb +13 -0
  57. data/lib/mongoid/errors/document_not_found.rb +29 -0
  58. data/lib/mongoid/errors/invalid_collection.rb +19 -0
  59. data/lib/mongoid/errors/invalid_database.rb +20 -0
  60. data/lib/mongoid/errors/invalid_field.rb +19 -0
  61. data/lib/mongoid/errors/invalid_options.rb +16 -0
  62. data/lib/mongoid/errors/invalid_type.rb +26 -0
  63. data/lib/mongoid/errors/mixed_relations.rb +37 -0
  64. data/lib/mongoid/errors/mongoid_error.rb +27 -0
  65. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +21 -0
  66. data/lib/mongoid/errors/unsaved_document.rb +23 -0
  67. data/lib/mongoid/errors/unsupported_version.rb +21 -0
  68. data/lib/mongoid/errors/validations.rb +24 -0
  69. data/lib/mongoid/extensions.rb +123 -0
  70. data/lib/mongoid/extensions/array/conversions.rb +23 -0
  71. data/lib/mongoid/extensions/array/parentization.rb +13 -0
  72. data/lib/mongoid/extensions/big_decimal/conversions.rb +19 -0
  73. data/lib/mongoid/extensions/binary/conversions.rb +17 -0
  74. data/lib/mongoid/extensions/boolean/conversions.rb +27 -0
  75. data/lib/mongoid/extensions/date/conversions.rb +25 -0
  76. data/lib/mongoid/extensions/datetime/conversions.rb +12 -0
  77. data/lib/mongoid/extensions/false_class/equality.rb +13 -0
  78. data/lib/mongoid/extensions/float/conversions.rb +20 -0
  79. data/lib/mongoid/extensions/hash/conversions.rb +19 -0
  80. data/lib/mongoid/extensions/hash/criteria_helpers.rb +22 -0
  81. data/lib/mongoid/extensions/hash/scoping.rb +12 -0
  82. data/lib/mongoid/extensions/integer/conversions.rb +20 -0
  83. data/lib/mongoid/extensions/nil/collectionization.rb +12 -0
  84. data/lib/mongoid/extensions/object/checks.rb +32 -0
  85. data/lib/mongoid/extensions/object/conversions.rb +25 -0
  86. data/lib/mongoid/extensions/object/reflections.rb +17 -0
  87. data/lib/mongoid/extensions/object/yoda.rb +27 -0
  88. data/lib/mongoid/extensions/object_id/conversions.rb +96 -0
  89. data/lib/mongoid/extensions/proc/scoping.rb +12 -0
  90. data/lib/mongoid/extensions/range/conversions.rb +25 -0
  91. data/lib/mongoid/extensions/set/conversions.rb +20 -0
  92. data/lib/mongoid/extensions/string/conversions.rb +34 -0
  93. data/lib/mongoid/extensions/string/inflections.rb +97 -0
  94. data/lib/mongoid/extensions/symbol/conversions.rb +21 -0
  95. data/lib/mongoid/extensions/symbol/inflections.rb +40 -0
  96. data/lib/mongoid/extensions/time_conversions.rb +38 -0
  97. data/lib/mongoid/extensions/true_class/equality.rb +13 -0
  98. data/lib/mongoid/extras.rb +42 -0
  99. data/lib/mongoid/factory.rb +37 -0
  100. data/lib/mongoid/field.rb +162 -0
  101. data/lib/mongoid/fields.rb +183 -0
  102. data/lib/mongoid/finders.rb +127 -0
  103. data/lib/mongoid/hierarchy.rb +85 -0
  104. data/lib/mongoid/identity.rb +92 -0
  105. data/lib/mongoid/indexes.rb +38 -0
  106. data/lib/mongoid/inspection.rb +54 -0
  107. data/lib/mongoid/javascript.rb +21 -0
  108. data/lib/mongoid/javascript/functions.yml +37 -0
  109. data/lib/mongoid/json.rb +16 -0
  110. data/lib/mongoid/keys.rb +131 -0
  111. data/lib/mongoid/logger.rb +18 -0
  112. data/lib/mongoid/matchers.rb +32 -0
  113. data/lib/mongoid/matchers/all.rb +11 -0
  114. data/lib/mongoid/matchers/default.rb +70 -0
  115. data/lib/mongoid/matchers/exists.rb +13 -0
  116. data/lib/mongoid/matchers/gt.rb +11 -0
  117. data/lib/mongoid/matchers/gte.rb +11 -0
  118. data/lib/mongoid/matchers/in.rb +11 -0
  119. data/lib/mongoid/matchers/lt.rb +11 -0
  120. data/lib/mongoid/matchers/lte.rb +11 -0
  121. data/lib/mongoid/matchers/ne.rb +11 -0
  122. data/lib/mongoid/matchers/nin.rb +11 -0
  123. data/lib/mongoid/matchers/or.rb +30 -0
  124. data/lib/mongoid/matchers/size.rb +11 -0
  125. data/lib/mongoid/matchers/strategies.rb +63 -0
  126. data/lib/mongoid/multi_database.rb +11 -0
  127. data/lib/mongoid/multi_parameter_attributes.rb +82 -0
  128. data/lib/mongoid/named_scope.rb +137 -0
  129. data/lib/mongoid/nested_attributes.rb +51 -0
  130. data/lib/mongoid/observer.rb +67 -0
  131. data/lib/mongoid/paranoia.rb +103 -0
  132. data/lib/mongoid/paths.rb +61 -0
  133. data/lib/mongoid/persistence.rb +240 -0
  134. data/lib/mongoid/persistence/atomic.rb +88 -0
  135. data/lib/mongoid/persistence/atomic/add_to_set.rb +32 -0
  136. data/lib/mongoid/persistence/atomic/inc.rb +28 -0
  137. data/lib/mongoid/persistence/atomic/operation.rb +44 -0
  138. data/lib/mongoid/persistence/atomic/pull_all.rb +33 -0
  139. data/lib/mongoid/persistence/atomic/push.rb +28 -0
  140. data/lib/mongoid/persistence/command.rb +71 -0
  141. data/lib/mongoid/persistence/insert.rb +53 -0
  142. data/lib/mongoid/persistence/insert_embedded.rb +43 -0
  143. data/lib/mongoid/persistence/remove.rb +44 -0
  144. data/lib/mongoid/persistence/remove_all.rb +40 -0
  145. data/lib/mongoid/persistence/remove_embedded.rb +48 -0
  146. data/lib/mongoid/persistence/update.rb +77 -0
  147. data/lib/mongoid/railtie.rb +139 -0
  148. data/lib/mongoid/railties/database.rake +171 -0
  149. data/lib/mongoid/railties/document.rb +12 -0
  150. data/lib/mongoid/relations.rb +107 -0
  151. data/lib/mongoid/relations/accessors.rb +175 -0
  152. data/lib/mongoid/relations/auto_save.rb +34 -0
  153. data/lib/mongoid/relations/binding.rb +26 -0
  154. data/lib/mongoid/relations/bindings.rb +9 -0
  155. data/lib/mongoid/relations/bindings/embedded/in.rb +82 -0
  156. data/lib/mongoid/relations/bindings/embedded/many.rb +98 -0
  157. data/lib/mongoid/relations/bindings/embedded/one.rb +66 -0
  158. data/lib/mongoid/relations/bindings/referenced/in.rb +74 -0
  159. data/lib/mongoid/relations/bindings/referenced/many.rb +96 -0
  160. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +103 -0
  161. data/lib/mongoid/relations/bindings/referenced/one.rb +66 -0
  162. data/lib/mongoid/relations/builder.rb +42 -0
  163. data/lib/mongoid/relations/builders.rb +79 -0
  164. data/lib/mongoid/relations/builders/embedded/in.rb +25 -0
  165. data/lib/mongoid/relations/builders/embedded/many.rb +32 -0
  166. data/lib/mongoid/relations/builders/embedded/one.rb +26 -0
  167. data/lib/mongoid/relations/builders/nested_attributes/many.rb +126 -0
  168. data/lib/mongoid/relations/builders/nested_attributes/one.rb +135 -0
  169. data/lib/mongoid/relations/builders/referenced/in.rb +29 -0
  170. data/lib/mongoid/relations/builders/referenced/many.rb +47 -0
  171. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +29 -0
  172. data/lib/mongoid/relations/builders/referenced/one.rb +27 -0
  173. data/lib/mongoid/relations/cascading.rb +55 -0
  174. data/lib/mongoid/relations/cascading/delete.rb +19 -0
  175. data/lib/mongoid/relations/cascading/destroy.rb +19 -0
  176. data/lib/mongoid/relations/cascading/nullify.rb +18 -0
  177. data/lib/mongoid/relations/cascading/strategy.rb +26 -0
  178. data/lib/mongoid/relations/constraint.rb +42 -0
  179. data/lib/mongoid/relations/cyclic.rb +103 -0
  180. data/lib/mongoid/relations/embedded/atomic.rb +86 -0
  181. data/lib/mongoid/relations/embedded/atomic/operation.rb +63 -0
  182. data/lib/mongoid/relations/embedded/atomic/pull.rb +65 -0
  183. data/lib/mongoid/relations/embedded/atomic/push_all.rb +59 -0
  184. data/lib/mongoid/relations/embedded/atomic/set.rb +61 -0
  185. data/lib/mongoid/relations/embedded/atomic/unset.rb +41 -0
  186. data/lib/mongoid/relations/embedded/in.rb +173 -0
  187. data/lib/mongoid/relations/embedded/many.rb +499 -0
  188. data/lib/mongoid/relations/embedded/one.rb +170 -0
  189. data/lib/mongoid/relations/macros.rb +310 -0
  190. data/lib/mongoid/relations/many.rb +215 -0
  191. data/lib/mongoid/relations/metadata.rb +539 -0
  192. data/lib/mongoid/relations/nested_builder.rb +68 -0
  193. data/lib/mongoid/relations/one.rb +47 -0
  194. data/lib/mongoid/relations/polymorphic.rb +54 -0
  195. data/lib/mongoid/relations/proxy.rb +143 -0
  196. data/lib/mongoid/relations/referenced/batch.rb +71 -0
  197. data/lib/mongoid/relations/referenced/batch/insert.rb +57 -0
  198. data/lib/mongoid/relations/referenced/in.rb +216 -0
  199. data/lib/mongoid/relations/referenced/many.rb +516 -0
  200. data/lib/mongoid/relations/referenced/many_to_many.rb +396 -0
  201. data/lib/mongoid/relations/referenced/one.rb +222 -0
  202. data/lib/mongoid/relations/reflections.rb +45 -0
  203. data/lib/mongoid/safe.rb +23 -0
  204. data/lib/mongoid/safety.rb +207 -0
  205. data/lib/mongoid/scope.rb +31 -0
  206. data/lib/mongoid/serialization.rb +99 -0
  207. data/lib/mongoid/sharding.rb +51 -0
  208. data/lib/mongoid/state.rb +67 -0
  209. data/lib/mongoid/timestamps.rb +14 -0
  210. data/lib/mongoid/timestamps/created.rb +31 -0
  211. data/lib/mongoid/timestamps/updated.rb +33 -0
  212. data/lib/mongoid/validations.rb +124 -0
  213. data/lib/mongoid/validations/associated.rb +44 -0
  214. data/lib/mongoid/validations/referenced.rb +58 -0
  215. data/lib/mongoid/validations/uniqueness.rb +85 -0
  216. data/lib/mongoid/version.rb +4 -0
  217. data/lib/mongoid/versioning.rb +113 -0
  218. data/lib/rails/generators/mongoid/config/config_generator.rb +25 -0
  219. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +20 -0
  220. data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
  221. data/lib/rails/generators/mongoid/model/templates/model.rb +19 -0
  222. data/lib/rails/generators/mongoid/observer/observer_generator.rb +17 -0
  223. data/lib/rails/generators/mongoid/observer/templates/observer.rb +4 -0
  224. data/lib/rails/generators/mongoid_generator.rb +70 -0
  225. data/lib/rails/mongoid.rb +58 -0
  226. metadata +406 -0
@@ -0,0 +1,4 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ VERSION = "2.0.2"
4
+ end
@@ -0,0 +1,113 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc:
3
+
4
+ # Include this module to get automatic versioning of root level documents.
5
+ # This will add a version field to the +Document+ and a has_many association
6
+ # with all the versions contained in it.
7
+ module Versioning
8
+ extend ActiveSupport::Concern
9
+
10
+ included do
11
+ field :version, :type => Integer, :default => 1
12
+
13
+ embeds_many :versions, :class_name => self.name, :validate => false
14
+ set_callback :save, :before, :revise, :if => :revisable?
15
+
16
+ class_attribute :version_max
17
+ delegate :version_max, :to => "self.class"
18
+ end
19
+
20
+ # Create a new version of the +Document+. This will load the previous
21
+ # document from the database and set it as the next version before saving
22
+ # the current document. It then increments the version number. If a #max_versions
23
+ # limit is set in the model and it's exceeded, the oldest version gets discarded.
24
+ #
25
+ # @example Revise the document.
26
+ # person.revise
27
+ #
28
+ # @since 1.0.0
29
+ def revise
30
+ previous = find_last_version
31
+ if previous
32
+ versions.target << previous.clone
33
+ versions.shift if version_max.present? && versions.length > version_max
34
+ self.version = (version || 1 ) + 1
35
+ @modifications["versions"] = [ nil, versions.as_document ] if @modifications
36
+ end
37
+ end
38
+
39
+ # Executes a block that temporarily disables versioning. This is for cases
40
+ # where you do not want to version on every save.
41
+ #
42
+ # @example Execute a save without versioning.
43
+ # person.versionless(&:save)
44
+ #
45
+ # @return [ Object ] The document or result of the block execution.
46
+ #
47
+ # @since 2.0.0
48
+ def versionless
49
+ @versionless = true
50
+ result = yield(self) if block_given?
51
+ @versionless = false
52
+ result || self
53
+ end
54
+
55
+ private
56
+
57
+ # Find the previous version of this document in the database, or if the
58
+ # document had been saved without versioning return the persisted one.
59
+ #
60
+ # @example Find the last version.
61
+ # document.find_last_version
62
+ #
63
+ # @return [ Document, nil ] The previously saved document.
64
+ #
65
+ # @since 2.0.0
66
+ def find_last_version
67
+ self.class.
68
+ where(:_id => id).
69
+ any_of({ :version => version }, { :version => nil }).first
70
+ end
71
+
72
+ # Is the document able to be revised? This is true if the document has
73
+ # changed and we have not explicitly told it not to version.
74
+ #
75
+ # @example Is the document revisable?
76
+ # document.revisable?
77
+ #
78
+ # @return [ true, false ] If the document is revisable.
79
+ #
80
+ # @since 2.0.0
81
+ def revisable?
82
+ changed? && !versionless?
83
+ end
84
+
85
+ # Are we in versionless mode? This is true if in a versionless block on the
86
+ # document.
87
+ #
88
+ # @example Is the document in versionless mode?
89
+ # document.versionless?
90
+ #
91
+ # @return [ true, false ] Is the document not currently versioning.
92
+ #
93
+ # @since 2.0.0
94
+ def versionless?
95
+ !!@versionless
96
+ end
97
+
98
+ module ClassMethods #:nodoc:
99
+
100
+ # Sets the maximum number of versions to store.
101
+ #
102
+ # @example Set the maximum.
103
+ # Person.max_versions(5)
104
+ #
105
+ # @param [ Integer ] number The maximum number to store.
106
+ #
107
+ # @return [ Integer ] The max number of versions.
108
+ def max_versions(number)
109
+ self.version_max = number.to_i
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ require 'rails/generators/mongoid_generator'
3
+
4
+ module Mongoid
5
+ module Generators
6
+ class ConfigGenerator < Rails::Generators::Base
7
+ desc "Creates a Mongoid configuration file at config/mongoid.yml"
8
+
9
+ argument :database_name, :type => :string, :optional => true
10
+
11
+ def self.source_root
12
+ @_mongoid_source_root ||= File.expand_path("../templates", __FILE__)
13
+ end
14
+
15
+ def app_name
16
+ Rails::Application.subclasses.first.parent.to_s.underscore
17
+ end
18
+
19
+ def create_config_file
20
+ template 'mongoid.yml', File.join('config', "mongoid.yml")
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,20 @@
1
+ development:
2
+ host: localhost
3
+ database: <%= database_name || app_name %>_development
4
+
5
+ test:
6
+ host: localhost
7
+ database: <%= database_name || app_name %>_test
8
+
9
+ # set these environment variables on your prod server
10
+ production:
11
+ host: <%%= ENV['MONGOID_HOST'] %>
12
+ port: <%%= ENV['MONGOID_PORT'] %>
13
+ username: <%%= ENV['MONGOID_USERNAME'] %>
14
+ password: <%%= ENV['MONGOID_PASSWORD'] %>
15
+ database: <%%= ENV['MONGOID_DATABASE'] %>
16
+ # slaves:
17
+ # - host: slave1.local
18
+ # port: 27018
19
+ # - host: slave2.local
20
+ # port: 27019
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ require "rails/generators/mongoid_generator"
3
+
4
+ module Mongoid #:nodoc:
5
+ module Generators #:nodoc:
6
+ class ModelGenerator < Base #:nodoc:
7
+
8
+ desc "Creates a Mongoid model"
9
+ argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
10
+
11
+ check_class_collision
12
+
13
+ class_option :timestamps, :type => :boolean
14
+ class_option :parent, :type => :string, :desc => "The parent class for the generated model"
15
+ class_option :versioning, :type => :boolean, :default => false, :desc => "Enable mongoid versioning"
16
+
17
+ def create_model_file
18
+ template "model.rb", File.join("app/models", class_path, "#{file_name}.rb")
19
+ end
20
+
21
+ hook_for :test_framework
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ <% module_namespacing do -%>
2
+ class <%= class_name %><%= " < #{options[:parent].classify}" if options[:parent] %>
3
+ <% unless options[:parent] -%>
4
+ include Mongoid::Document
5
+ <% end -%>
6
+ <% if options[:timestamps] -%>
7
+ include Mongoid::Timestamps
8
+ <% end -%>
9
+ <% if options[:versioning] -%>
10
+ include Mongoid::Versioning
11
+ <% end -%>
12
+ <% attributes.reject{|attr| attr.reference?}.each do |attribute| -%>
13
+ field :<%= attribute.name %>, :type => <%= attribute.type_class %>
14
+ <% end -%>
15
+ <% attributes.select{|attr| attr.reference? }.each do |attribute| -%>
16
+ embedded_in :<%= attribute.name%>, :inverse_of => :<%= class_name.tableize %>
17
+ <% end -%>
18
+ end
19
+ <% end -%>
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ require "rails/generators/mongoid_generator"
3
+
4
+ module Mongoid #:nodoc:
5
+ module Generators #:nodoc:
6
+ class ObserverGenerator < Base #:nodoc:
7
+
8
+ check_class_collision :suffix => "Observer"
9
+
10
+ def create_observer_file
11
+ template 'observer.rb', File.join('app/models', class_path, "#{file_name}_observer.rb")
12
+ end
13
+
14
+ hook_for :test_framework
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,4 @@
1
+ <% module_namespacing do -%>
2
+ class <%= class_name %>Observer < Mongoid::Observer
3
+ end
4
+ <% end -%>
@@ -0,0 +1,70 @@
1
+ # encoding: utf-8
2
+ require "rails/generators/named_base"
3
+ require "rails/generators/active_model"
4
+
5
+ module Mongoid #:nodoc:
6
+ module Generators #:nodoc:
7
+ class Base < ::Rails::Generators::NamedBase #:nodoc:
8
+
9
+ def self.source_root
10
+ @_mongoid_source_root ||=
11
+ File.expand_path("../#{base_name}/#{generator_name}/templates", __FILE__)
12
+ end
13
+
14
+ unless methods.include?(:module_namespacing)
15
+
16
+ # This is only defined on Rails edge at the moment, so include here now
17
+ # as per: https://github.com/mongoid/mongoid/issues/744
18
+ def module_namespacing(&block)
19
+ yield if block
20
+ end
21
+ end
22
+ end
23
+
24
+ class ActiveModel < ::Rails::Generators::ActiveModel #:nodoc:
25
+ def self.all(klass)
26
+ "#{klass}.all"
27
+ end
28
+
29
+ def self.find(klass, params=nil)
30
+ "#{klass}.find(#{params})"
31
+ end
32
+
33
+ def self.build(klass, params=nil)
34
+ if params
35
+ "#{klass}.new(#{params})"
36
+ else
37
+ "#{klass}.new"
38
+ end
39
+ end
40
+
41
+ def save
42
+ "#{name}.save"
43
+ end
44
+
45
+ def update_attributes(params=nil)
46
+ "#{name}.update_attributes(#{params})"
47
+ end
48
+
49
+ def errors
50
+ "#{name}.errors"
51
+ end
52
+
53
+ def destroy
54
+ "#{name}.destroy"
55
+ end
56
+ end
57
+ end
58
+ end
59
+
60
+ module Rails
61
+ module Generators
62
+ class GeneratedAttribute #:nodoc:
63
+ def type_class
64
+ return "Time" if type.to_s == "datetime"
65
+ return "String" if type.to_s == "text"
66
+ return type.to_s.camelcase
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,58 @@
1
+ # encoding: utf-8
2
+ module Rails #:nodoc:
3
+ module Mongoid #:nodoc:
4
+ extend self
5
+
6
+ # Use the application configuration to get every model and require it, so
7
+ # that indexing and inheritance work in both development and production
8
+ # with the same results.
9
+ #
10
+ # @example Load all the application models.
11
+ # Rails::Mongoid.load_models(app)
12
+ #
13
+ # @param [ Application ] app The rails application.
14
+ def load_models(app)
15
+ return unless ::Mongoid.preload_models
16
+ app.config.paths["app/models"].each do |path|
17
+ Dir.glob("#{path}/**/*.rb").sort.each do |file|
18
+ load_model(file.gsub("#{path}/" , "").gsub(".rb", ""))
19
+ end
20
+ end
21
+ end
22
+
23
+ # Recursive function to create all the indexes for the model, then
24
+ # potentially and subclass of the model since both are still root
25
+ # documents in the hierarchy.
26
+ #
27
+ # Note there is a tricky naming scheme going on here that needs to be
28
+ # revisisted. Module.descendants vs Class.descendents is way too
29
+ # confusing.
30
+ #
31
+ # @example Index the children.
32
+ # Rails::Mongoid.index_children(classes)
33
+ #
34
+ # @param [ Array<Class> ] children The child model classes.
35
+ def index_children(children)
36
+ children.each do |model|
37
+ Logger.new($stdout).info("Generating indexes for #{model}")
38
+ model.create_indexes
39
+ index_children(model.descendants)
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ # I don't want to mock out kernel for unit testing purposes, so added this
46
+ # method as a convenience.
47
+ #
48
+ # @example Load the model.
49
+ # Mongoid.load_model("/mongoid/behaviour")
50
+ #
51
+ # @param [ String ] file The base filename.
52
+ #
53
+ # @since 2.0.0.rc.3
54
+ def load_model(file)
55
+ require_dependency(file)
56
+ end
57
+ end
58
+ end
metadata ADDED
@@ -0,0 +1,406 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mongoid-braxton
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 2
7
+ - 0
8
+ - 2
9
+ version: 2.0.2
10
+ platform: ruby
11
+ authors:
12
+ - Durran Jordan
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-06-06 00:00:00 -06:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: activemodel
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 3
30
+ - 0
31
+ version: "3.0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: tzinfo
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 0
44
+ - 3
45
+ - 22
46
+ version: 0.3.22
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: mongo-lyon
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ~>
56
+ - !ruby/object:Gem::Version
57
+ segments:
58
+ - 1
59
+ - 2
60
+ - 4
61
+ version: 1.2.4
62
+ type: :runtime
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ name: rdoc
66
+ prerelease: false
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ~>
71
+ - !ruby/object:Gem::Version
72
+ segments:
73
+ - 3
74
+ - 5
75
+ - 0
76
+ version: 3.5.0
77
+ type: :development
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: bson_ext
81
+ prerelease: false
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ segments:
88
+ - 1
89
+ - 3
90
+ version: "1.3"
91
+ type: :development
92
+ version_requirements: *id005
93
+ - !ruby/object:Gem::Dependency
94
+ name: mocha
95
+ prerelease: false
96
+ requirement: &id006 !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - "="
100
+ - !ruby/object:Gem::Version
101
+ segments:
102
+ - 0
103
+ - 9
104
+ - 8
105
+ version: 0.9.8
106
+ type: :development
107
+ version_requirements: *id006
108
+ - !ruby/object:Gem::Dependency
109
+ name: rspec
110
+ prerelease: false
111
+ requirement: &id007 !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - ~>
115
+ - !ruby/object:Gem::Version
116
+ segments:
117
+ - 2
118
+ - 6
119
+ version: "2.6"
120
+ type: :development
121
+ version_requirements: *id007
122
+ - !ruby/object:Gem::Dependency
123
+ name: watchr
124
+ prerelease: false
125
+ requirement: &id008 !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - "="
129
+ - !ruby/object:Gem::Version
130
+ segments:
131
+ - 0
132
+ - 6
133
+ version: "0.6"
134
+ type: :development
135
+ version_requirements: *id008
136
+ description: Mongoid is an ODM (Object Document Mapper) Framework for MongoDB, written in Ruby.
137
+ email:
138
+ - durran@gmail.com
139
+ executables: []
140
+
141
+ extensions: []
142
+
143
+ extra_rdoc_files: []
144
+
145
+ files:
146
+ - lib/config/locales/bg.yml
147
+ - lib/config/locales/de.yml
148
+ - lib/config/locales/en.yml
149
+ - lib/config/locales/es.yml
150
+ - lib/config/locales/fr.yml
151
+ - lib/config/locales/hu.yml
152
+ - lib/config/locales/id.yml
153
+ - lib/config/locales/it.yml
154
+ - lib/config/locales/ja.yml
155
+ - lib/config/locales/kr.yml
156
+ - lib/config/locales/nl.yml
157
+ - lib/config/locales/pl.yml
158
+ - lib/config/locales/pt-BR.yml
159
+ - lib/config/locales/pt.yml
160
+ - lib/config/locales/ro.yml
161
+ - lib/config/locales/ru.yml
162
+ - lib/config/locales/sv.yml
163
+ - lib/config/locales/vi.yml
164
+ - lib/config/locales/zh-CN.yml
165
+ - lib/mongoid/atomicity.rb
166
+ - lib/mongoid/attributes/processing.rb
167
+ - lib/mongoid/attributes.rb
168
+ - lib/mongoid/callbacks.rb
169
+ - lib/mongoid/collection.rb
170
+ - lib/mongoid/collections/master.rb
171
+ - lib/mongoid/collections/operations.rb
172
+ - lib/mongoid/collections/retry.rb
173
+ - lib/mongoid/collections.rb
174
+ - lib/mongoid/components.rb
175
+ - lib/mongoid/config/database.rb
176
+ - lib/mongoid/config/replset_database.rb
177
+ - lib/mongoid/config.rb
178
+ - lib/mongoid/contexts/enumerable/sort.rb
179
+ - lib/mongoid/contexts/enumerable.rb
180
+ - lib/mongoid/contexts/mongo.rb
181
+ - lib/mongoid/contexts.rb
182
+ - lib/mongoid/copyable.rb
183
+ - lib/mongoid/criteria.rb
184
+ - lib/mongoid/criterion/builder.rb
185
+ - lib/mongoid/criterion/complex.rb
186
+ - lib/mongoid/criterion/creational.rb
187
+ - lib/mongoid/criterion/exclusion.rb
188
+ - lib/mongoid/criterion/inclusion.rb
189
+ - lib/mongoid/criterion/inspection.rb
190
+ - lib/mongoid/criterion/optional.rb
191
+ - lib/mongoid/criterion/selector.rb
192
+ - lib/mongoid/criterion/unconvertable.rb
193
+ - lib/mongoid/cursor.rb
194
+ - lib/mongoid/default_scope.rb
195
+ - lib/mongoid/dirty.rb
196
+ - lib/mongoid/document.rb
197
+ - lib/mongoid/errors/document_not_found.rb
198
+ - lib/mongoid/errors/invalid_collection.rb
199
+ - lib/mongoid/errors/invalid_database.rb
200
+ - lib/mongoid/errors/invalid_field.rb
201
+ - lib/mongoid/errors/invalid_options.rb
202
+ - lib/mongoid/errors/invalid_type.rb
203
+ - lib/mongoid/errors/mixed_relations.rb
204
+ - lib/mongoid/errors/mongoid_error.rb
205
+ - lib/mongoid/errors/too_many_nested_attribute_records.rb
206
+ - lib/mongoid/errors/unsaved_document.rb
207
+ - lib/mongoid/errors/unsupported_version.rb
208
+ - lib/mongoid/errors/validations.rb
209
+ - lib/mongoid/errors.rb
210
+ - lib/mongoid/extensions/array/conversions.rb
211
+ - lib/mongoid/extensions/array/parentization.rb
212
+ - lib/mongoid/extensions/big_decimal/conversions.rb
213
+ - lib/mongoid/extensions/binary/conversions.rb
214
+ - lib/mongoid/extensions/boolean/conversions.rb
215
+ - lib/mongoid/extensions/date/conversions.rb
216
+ - lib/mongoid/extensions/datetime/conversions.rb
217
+ - lib/mongoid/extensions/false_class/equality.rb
218
+ - lib/mongoid/extensions/float/conversions.rb
219
+ - lib/mongoid/extensions/hash/conversions.rb
220
+ - lib/mongoid/extensions/hash/criteria_helpers.rb
221
+ - lib/mongoid/extensions/hash/scoping.rb
222
+ - lib/mongoid/extensions/integer/conversions.rb
223
+ - lib/mongoid/extensions/nil/collectionization.rb
224
+ - lib/mongoid/extensions/object/checks.rb
225
+ - lib/mongoid/extensions/object/conversions.rb
226
+ - lib/mongoid/extensions/object/reflections.rb
227
+ - lib/mongoid/extensions/object/yoda.rb
228
+ - lib/mongoid/extensions/object_id/conversions.rb
229
+ - lib/mongoid/extensions/proc/scoping.rb
230
+ - lib/mongoid/extensions/range/conversions.rb
231
+ - lib/mongoid/extensions/set/conversions.rb
232
+ - lib/mongoid/extensions/string/conversions.rb
233
+ - lib/mongoid/extensions/string/inflections.rb
234
+ - lib/mongoid/extensions/symbol/conversions.rb
235
+ - lib/mongoid/extensions/symbol/inflections.rb
236
+ - lib/mongoid/extensions/time_conversions.rb
237
+ - lib/mongoid/extensions/true_class/equality.rb
238
+ - lib/mongoid/extensions.rb
239
+ - lib/mongoid/extras.rb
240
+ - lib/mongoid/factory.rb
241
+ - lib/mongoid/field.rb
242
+ - lib/mongoid/fields.rb
243
+ - lib/mongoid/finders.rb
244
+ - lib/mongoid/hierarchy.rb
245
+ - lib/mongoid/identity.rb
246
+ - lib/mongoid/indexes.rb
247
+ - lib/mongoid/inspection.rb
248
+ - lib/mongoid/javascript/functions.yml
249
+ - lib/mongoid/javascript.rb
250
+ - lib/mongoid/json.rb
251
+ - lib/mongoid/keys.rb
252
+ - lib/mongoid/logger.rb
253
+ - lib/mongoid/matchers/all.rb
254
+ - lib/mongoid/matchers/default.rb
255
+ - lib/mongoid/matchers/exists.rb
256
+ - lib/mongoid/matchers/gt.rb
257
+ - lib/mongoid/matchers/gte.rb
258
+ - lib/mongoid/matchers/in.rb
259
+ - lib/mongoid/matchers/lt.rb
260
+ - lib/mongoid/matchers/lte.rb
261
+ - lib/mongoid/matchers/ne.rb
262
+ - lib/mongoid/matchers/nin.rb
263
+ - lib/mongoid/matchers/or.rb
264
+ - lib/mongoid/matchers/size.rb
265
+ - lib/mongoid/matchers/strategies.rb
266
+ - lib/mongoid/matchers.rb
267
+ - lib/mongoid/multi_database.rb
268
+ - lib/mongoid/multi_parameter_attributes.rb
269
+ - lib/mongoid/named_scope.rb
270
+ - lib/mongoid/nested_attributes.rb
271
+ - lib/mongoid/observer.rb
272
+ - lib/mongoid/paranoia.rb
273
+ - lib/mongoid/paths.rb
274
+ - lib/mongoid/persistence/atomic/add_to_set.rb
275
+ - lib/mongoid/persistence/atomic/inc.rb
276
+ - lib/mongoid/persistence/atomic/operation.rb
277
+ - lib/mongoid/persistence/atomic/pull_all.rb
278
+ - lib/mongoid/persistence/atomic/push.rb
279
+ - lib/mongoid/persistence/atomic.rb
280
+ - lib/mongoid/persistence/command.rb
281
+ - lib/mongoid/persistence/insert.rb
282
+ - lib/mongoid/persistence/insert_embedded.rb
283
+ - lib/mongoid/persistence/remove.rb
284
+ - lib/mongoid/persistence/remove_all.rb
285
+ - lib/mongoid/persistence/remove_embedded.rb
286
+ - lib/mongoid/persistence/update.rb
287
+ - lib/mongoid/persistence.rb
288
+ - lib/mongoid/railtie.rb
289
+ - lib/mongoid/railties/database.rake
290
+ - lib/mongoid/railties/document.rb
291
+ - lib/mongoid/relations/accessors.rb
292
+ - lib/mongoid/relations/auto_save.rb
293
+ - lib/mongoid/relations/binding.rb
294
+ - lib/mongoid/relations/bindings/embedded/in.rb
295
+ - lib/mongoid/relations/bindings/embedded/many.rb
296
+ - lib/mongoid/relations/bindings/embedded/one.rb
297
+ - lib/mongoid/relations/bindings/referenced/in.rb
298
+ - lib/mongoid/relations/bindings/referenced/many.rb
299
+ - lib/mongoid/relations/bindings/referenced/many_to_many.rb
300
+ - lib/mongoid/relations/bindings/referenced/one.rb
301
+ - lib/mongoid/relations/bindings.rb
302
+ - lib/mongoid/relations/builder.rb
303
+ - lib/mongoid/relations/builders/embedded/in.rb
304
+ - lib/mongoid/relations/builders/embedded/many.rb
305
+ - lib/mongoid/relations/builders/embedded/one.rb
306
+ - lib/mongoid/relations/builders/nested_attributes/many.rb
307
+ - lib/mongoid/relations/builders/nested_attributes/one.rb
308
+ - lib/mongoid/relations/builders/referenced/in.rb
309
+ - lib/mongoid/relations/builders/referenced/many.rb
310
+ - lib/mongoid/relations/builders/referenced/many_to_many.rb
311
+ - lib/mongoid/relations/builders/referenced/one.rb
312
+ - lib/mongoid/relations/builders.rb
313
+ - lib/mongoid/relations/cascading/delete.rb
314
+ - lib/mongoid/relations/cascading/destroy.rb
315
+ - lib/mongoid/relations/cascading/nullify.rb
316
+ - lib/mongoid/relations/cascading/strategy.rb
317
+ - lib/mongoid/relations/cascading.rb
318
+ - lib/mongoid/relations/constraint.rb
319
+ - lib/mongoid/relations/cyclic.rb
320
+ - lib/mongoid/relations/embedded/atomic/operation.rb
321
+ - lib/mongoid/relations/embedded/atomic/pull.rb
322
+ - lib/mongoid/relations/embedded/atomic/push_all.rb
323
+ - lib/mongoid/relations/embedded/atomic/set.rb
324
+ - lib/mongoid/relations/embedded/atomic/unset.rb
325
+ - lib/mongoid/relations/embedded/atomic.rb
326
+ - lib/mongoid/relations/embedded/in.rb
327
+ - lib/mongoid/relations/embedded/many.rb
328
+ - lib/mongoid/relations/embedded/one.rb
329
+ - lib/mongoid/relations/macros.rb
330
+ - lib/mongoid/relations/many.rb
331
+ - lib/mongoid/relations/metadata.rb
332
+ - lib/mongoid/relations/nested_builder.rb
333
+ - lib/mongoid/relations/one.rb
334
+ - lib/mongoid/relations/polymorphic.rb
335
+ - lib/mongoid/relations/proxy.rb
336
+ - lib/mongoid/relations/referenced/batch/insert.rb
337
+ - lib/mongoid/relations/referenced/batch.rb
338
+ - lib/mongoid/relations/referenced/in.rb
339
+ - lib/mongoid/relations/referenced/many.rb
340
+ - lib/mongoid/relations/referenced/many_to_many.rb
341
+ - lib/mongoid/relations/referenced/one.rb
342
+ - lib/mongoid/relations/reflections.rb
343
+ - lib/mongoid/relations.rb
344
+ - lib/mongoid/safe.rb
345
+ - lib/mongoid/safety.rb
346
+ - lib/mongoid/scope.rb
347
+ - lib/mongoid/serialization.rb
348
+ - lib/mongoid/sharding.rb
349
+ - lib/mongoid/state.rb
350
+ - lib/mongoid/timestamps/created.rb
351
+ - lib/mongoid/timestamps/updated.rb
352
+ - lib/mongoid/timestamps.rb
353
+ - lib/mongoid/validations/associated.rb
354
+ - lib/mongoid/validations/referenced.rb
355
+ - lib/mongoid/validations/uniqueness.rb
356
+ - lib/mongoid/validations.rb
357
+ - lib/mongoid/version.rb
358
+ - lib/mongoid/versioning.rb
359
+ - lib/mongoid.rb
360
+ - lib/rails/generators/mongoid/config/config_generator.rb
361
+ - lib/rails/generators/mongoid/config/templates/mongoid.yml
362
+ - lib/rails/generators/mongoid/model/model_generator.rb
363
+ - lib/rails/generators/mongoid/model/templates/model.rb
364
+ - lib/rails/generators/mongoid/observer/observer_generator.rb
365
+ - lib/rails/generators/mongoid/observer/templates/observer.rb
366
+ - lib/rails/generators/mongoid_generator.rb
367
+ - lib/rails/mongoid.rb
368
+ - LICENSE
369
+ - README.rdoc
370
+ - Rakefile
371
+ has_rdoc: true
372
+ homepage: http://mongoid.org
373
+ licenses: []
374
+
375
+ post_install_message:
376
+ rdoc_options: []
377
+
378
+ require_paths:
379
+ - lib
380
+ required_ruby_version: !ruby/object:Gem::Requirement
381
+ none: false
382
+ requirements:
383
+ - - ">="
384
+ - !ruby/object:Gem::Version
385
+ segments:
386
+ - 0
387
+ version: "0"
388
+ required_rubygems_version: !ruby/object:Gem::Requirement
389
+ none: false
390
+ requirements:
391
+ - - ">="
392
+ - !ruby/object:Gem::Version
393
+ segments:
394
+ - 1
395
+ - 3
396
+ - 6
397
+ version: 1.3.6
398
+ requirements: []
399
+
400
+ rubyforge_project: mongoid
401
+ rubygems_version: 1.3.7
402
+ signing_key:
403
+ specification_version: 3
404
+ summary: Elegant Persistance in Ruby for MongoDB.
405
+ test_files: []
406
+