mongoid 2.8.1 → 3.0.0.rc
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/CHANGELOG.md +802 -58
- data/LICENSE +1 -1
- data/README.md +10 -11
- data/Rakefile +2 -8
- data/lib/config/locales/en.yml +441 -51
- data/lib/mongoid.rb +24 -39
- data/lib/mongoid/atomic.rb +16 -33
- data/lib/mongoid/atomic/modifiers.rb +2 -2
- data/lib/mongoid/atomic/paths/embedded.rb +4 -5
- data/lib/mongoid/atomic/paths/embedded/many.rb +6 -6
- data/lib/mongoid/atomic/paths/embedded/one.rb +5 -5
- data/lib/mongoid/atomic/paths/root.rb +4 -5
- data/lib/mongoid/attributes.rb +95 -32
- data/lib/mongoid/attributes/processing.rb +14 -10
- data/lib/mongoid/attributes/readonly.rb +56 -0
- data/lib/mongoid/callbacks.rb +90 -27
- data/lib/mongoid/collections/retry.rb +2 -3
- data/lib/mongoid/components.rb +11 -23
- data/lib/mongoid/config.rb +87 -233
- data/lib/mongoid/config/environment.rb +5 -6
- data/lib/mongoid/config/inflections.rb +6 -0
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/config/validators.rb +3 -0
- data/lib/mongoid/config/validators/option.rb +25 -0
- data/lib/mongoid/config/validators/session.rb +140 -0
- data/lib/mongoid/contextual.rb +50 -0
- data/lib/mongoid/contextual/aggregable/memory.rb +98 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +181 -0
- data/lib/mongoid/contextual/atomic.rb +179 -0
- data/lib/mongoid/contextual/command.rb +43 -0
- data/lib/mongoid/contextual/find_and_modify.rb +66 -0
- data/lib/mongoid/contextual/map_reduce.rb +273 -0
- data/lib/mongoid/contextual/memory.rb +383 -0
- data/lib/mongoid/contextual/mongo.rb +543 -0
- data/lib/mongoid/copyable.rb +3 -34
- data/lib/mongoid/criteria.rb +436 -250
- data/lib/mongoid/criterion/inspection.rb +14 -8
- data/lib/mongoid/criterion/scoping.rb +114 -44
- data/lib/mongoid/dirty.rb +152 -67
- data/lib/mongoid/document.rb +69 -50
- data/lib/mongoid/errors.rb +22 -1
- data/lib/mongoid/errors/ambiguous_relationship.rb +51 -0
- data/lib/mongoid/errors/callback.rb +5 -6
- data/lib/mongoid/errors/delete_restriction.rb +29 -0
- data/lib/mongoid/errors/document_not_found.rb +98 -17
- data/lib/mongoid/errors/eager_load.rb +3 -6
- data/lib/mongoid/errors/invalid_collection.rb +3 -3
- data/lib/mongoid/errors/invalid_config_option.rb +27 -0
- data/lib/mongoid/errors/invalid_database.rb +3 -3
- data/lib/mongoid/errors/invalid_field.rb +54 -8
- data/lib/mongoid/errors/invalid_field_option.rb +35 -0
- data/lib/mongoid/errors/invalid_find.rb +3 -3
- data/lib/mongoid/errors/invalid_index.rb +28 -0
- data/lib/mongoid/errors/invalid_options.rb +4 -4
- data/lib/mongoid/errors/invalid_scope.rb +24 -0
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +38 -0
- data/lib/mongoid/errors/invalid_storage_options.rb +27 -0
- data/lib/mongoid/errors/invalid_time.rb +3 -6
- data/lib/mongoid/errors/inverse_not_found.rb +29 -0
- data/lib/mongoid/errors/mixed_relations.rb +4 -9
- data/lib/mongoid/errors/mixed_session_configuration.rb +28 -0
- data/lib/mongoid/errors/mongoid_error.rb +54 -3
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +28 -0
- data/lib/mongoid/errors/no_default_session.rb +23 -0
- data/lib/mongoid/errors/no_environment.rb +3 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +24 -0
- data/lib/mongoid/errors/no_parent.rb +24 -0
- data/lib/mongoid/errors/no_session_config.rb +22 -0
- data/lib/mongoid/errors/no_session_database.rb +27 -0
- data/lib/mongoid/errors/no_session_hosts.rb +27 -0
- data/lib/mongoid/errors/no_sessions_config.rb +20 -0
- data/lib/mongoid/errors/readonly_attribute.rb +25 -0
- data/lib/mongoid/errors/scope_overwrite.rb +4 -4
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +4 -4
- data/lib/mongoid/errors/unknown_attribute.rb +25 -0
- data/lib/mongoid/errors/unsaved_document.rb +4 -8
- data/lib/mongoid/errors/unsupported_javascript.rb +27 -0
- data/lib/mongoid/errors/unsupported_version.rb +4 -4
- data/lib/mongoid/errors/validations.rb +7 -6
- data/lib/mongoid/errors/versioning_not_on_root.rb +23 -0
- data/lib/mongoid/extensions.rb +28 -76
- data/lib/mongoid/extensions/array.rb +127 -0
- data/lib/mongoid/extensions/big_decimal.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +24 -0
- data/lib/mongoid/extensions/date.rb +70 -0
- data/lib/mongoid/extensions/date_time.rb +68 -0
- data/lib/mongoid/extensions/false_class.rb +26 -0
- data/lib/mongoid/extensions/float.rb +44 -0
- data/lib/mongoid/extensions/hash.rb +91 -0
- data/lib/mongoid/extensions/integer.rb +54 -0
- data/lib/mongoid/extensions/module.rb +28 -0
- data/lib/mongoid/extensions/nil_class.rb +21 -0
- data/lib/mongoid/extensions/object.rb +188 -0
- data/lib/mongoid/extensions/object_id.rb +53 -0
- data/lib/mongoid/extensions/range.rb +55 -0
- data/lib/mongoid/extensions/regexp.rb +27 -0
- data/lib/mongoid/extensions/set.rb +55 -0
- data/lib/mongoid/extensions/string.rb +155 -0
- data/lib/mongoid/extensions/symbol.rb +54 -0
- data/lib/mongoid/extensions/time.rb +78 -0
- data/lib/mongoid/extensions/time_with_zone.rb +55 -0
- data/lib/mongoid/extensions/true_class.rb +26 -0
- data/lib/mongoid/factory.rb +1 -1
- data/lib/mongoid/fields.rb +129 -194
- data/lib/mongoid/fields/foreign_key.rb +134 -0
- data/lib/mongoid/fields/localized.rb +73 -0
- data/lib/mongoid/fields/standard.rb +268 -0
- data/lib/mongoid/fields/validators.rb +2 -0
- data/lib/mongoid/fields/validators/macro.rb +83 -0
- data/lib/mongoid/finders.rb +42 -43
- data/lib/mongoid/hierarchy.rb +25 -14
- data/lib/mongoid/identity_map.rb +31 -19
- data/lib/mongoid/indexes.rb +66 -15
- data/lib/mongoid/indexes/validators/options.rb +80 -0
- data/lib/mongoid/inspection.rb +1 -1
- data/lib/mongoid/javascript.rb +1 -1
- data/lib/mongoid/json.rb +2 -2
- data/lib/mongoid/loggable.rb +69 -0
- data/lib/mongoid/matchers.rb +1 -1
- data/lib/mongoid/matchers/all.rb +7 -8
- data/lib/mongoid/matchers/and.rb +3 -3
- data/lib/mongoid/matchers/default.rb +6 -4
- data/lib/mongoid/matchers/exists.rb +2 -2
- data/lib/mongoid/matchers/gt.rb +2 -2
- data/lib/mongoid/matchers/gte.rb +2 -2
- data/lib/mongoid/matchers/in.rb +3 -7
- data/lib/mongoid/matchers/lt.rb +2 -2
- data/lib/mongoid/matchers/lte.rb +2 -2
- data/lib/mongoid/matchers/ne.rb +2 -2
- data/lib/mongoid/matchers/nin.rb +2 -2
- data/lib/mongoid/matchers/or.rb +2 -2
- data/lib/mongoid/matchers/size.rb +2 -2
- data/lib/mongoid/matchers/strategies.rb +3 -3
- data/lib/mongoid/multi_parameter_attributes.rb +8 -10
- data/lib/mongoid/nested_attributes.rb +17 -9
- data/lib/mongoid/observer.rb +1 -2
- data/lib/mongoid/paranoia.rb +13 -18
- data/lib/mongoid/persistence.rb +43 -39
- data/lib/mongoid/persistence/atomic.rb +2 -2
- data/lib/mongoid/persistence/atomic/add_to_set.rb +5 -9
- data/lib/mongoid/persistence/atomic/bit.rb +5 -7
- data/lib/mongoid/persistence/atomic/inc.rb +5 -7
- data/lib/mongoid/persistence/atomic/operation.rb +45 -6
- data/lib/mongoid/persistence/atomic/pop.rb +5 -7
- data/lib/mongoid/persistence/atomic/pull.rb +5 -7
- data/lib/mongoid/persistence/atomic/pull_all.rb +5 -7
- data/lib/mongoid/persistence/atomic/push.rb +4 -10
- data/lib/mongoid/persistence/atomic/push_all.rb +4 -10
- data/lib/mongoid/persistence/atomic/rename.rb +6 -7
- data/lib/mongoid/persistence/atomic/sets.rb +5 -7
- data/lib/mongoid/persistence/atomic/unset.rb +4 -5
- data/lib/mongoid/persistence/deletion.rb +2 -2
- data/lib/mongoid/persistence/insertion.rb +10 -16
- data/lib/mongoid/persistence/modification.rb +5 -9
- data/lib/mongoid/persistence/operations.rb +6 -19
- data/lib/mongoid/persistence/operations/embedded/insert.rb +7 -6
- data/lib/mongoid/persistence/operations/embedded/remove.rb +5 -5
- data/lib/mongoid/persistence/operations/insert.rb +4 -4
- data/lib/mongoid/persistence/operations/remove.rb +4 -4
- data/lib/mongoid/persistence/operations/update.rb +5 -5
- data/lib/mongoid/railtie.rb +26 -11
- data/lib/mongoid/railties/database.rake +22 -108
- data/lib/mongoid/relations.rb +4 -6
- data/lib/mongoid/relations/accessors.rb +119 -19
- data/lib/mongoid/relations/auto_save.rb +59 -5
- data/lib/mongoid/relations/binding.rb +211 -2
- data/lib/mongoid/relations/bindings/embedded/in.rb +16 -22
- data/lib/mongoid/relations/bindings/embedded/many.rb +9 -50
- data/lib/mongoid/relations/bindings/embedded/one.rb +10 -16
- data/lib/mongoid/relations/bindings/referenced/in.rb +31 -57
- data/lib/mongoid/relations/bindings/referenced/many.rb +8 -20
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +15 -19
- data/lib/mongoid/relations/bindings/referenced/one.rb +10 -24
- data/lib/mongoid/relations/builder.rb +3 -3
- data/lib/mongoid/relations/builders.rb +19 -16
- data/lib/mongoid/relations/builders/embedded/in.rb +5 -5
- data/lib/mongoid/relations/builders/embedded/many.rb +12 -12
- data/lib/mongoid/relations/builders/embedded/one.rb +6 -6
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +8 -8
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -4
- data/lib/mongoid/relations/builders/referenced/in.rb +4 -4
- data/lib/mongoid/relations/builders/referenced/many.rb +5 -5
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +7 -5
- data/lib/mongoid/relations/builders/referenced/one.rb +5 -5
- data/lib/mongoid/relations/cascading.rb +6 -4
- data/lib/mongoid/relations/cascading/delete.rb +3 -5
- data/lib/mongoid/relations/cascading/destroy.rb +3 -3
- data/lib/mongoid/relations/cascading/nullify.rb +3 -3
- data/lib/mongoid/relations/cascading/restrict.rb +37 -0
- data/lib/mongoid/relations/constraint.rb +4 -3
- data/lib/mongoid/relations/conversions.rb +5 -6
- data/lib/mongoid/relations/cyclic.rb +7 -7
- data/lib/mongoid/relations/embedded/batchable.rb +346 -0
- data/lib/mongoid/relations/embedded/in.rb +23 -12
- data/lib/mongoid/relations/embedded/many.rb +99 -161
- data/lib/mongoid/relations/embedded/one.rb +25 -14
- data/lib/mongoid/relations/macros.rb +105 -61
- data/lib/mongoid/relations/many.rb +93 -14
- data/lib/mongoid/relations/metadata.rb +200 -45
- data/lib/mongoid/relations/nested_builder.rb +3 -5
- data/lib/mongoid/relations/one.rb +2 -2
- data/lib/mongoid/relations/options.rb +2 -2
- data/lib/mongoid/relations/polymorphic.rb +9 -9
- data/lib/mongoid/relations/proxy.rb +60 -31
- data/lib/mongoid/relations/referenced/in.rb +40 -15
- data/lib/mongoid/relations/referenced/many.rb +117 -132
- data/lib/mongoid/relations/referenced/many_to_many.rb +101 -46
- data/lib/mongoid/relations/referenced/one.rb +34 -13
- data/lib/mongoid/relations/reflections.rb +3 -3
- data/lib/mongoid/relations/synchronization.rb +19 -23
- data/lib/mongoid/relations/targets/enumerable.rb +86 -57
- data/lib/mongoid/reloading.rb +12 -14
- data/lib/mongoid/scoping.rb +329 -0
- data/lib/mongoid/serialization.rb +8 -27
- data/lib/mongoid/sessions.rb +359 -0
- data/lib/mongoid/sessions/factory.rb +106 -0
- data/lib/mongoid/sessions/mongo_uri.rb +93 -0
- data/lib/mongoid/sessions/validators.rb +2 -0
- data/lib/mongoid/sessions/validators/storage.rb +49 -0
- data/lib/mongoid/sharding.rb +6 -6
- data/lib/mongoid/state.rb +6 -7
- data/lib/mongoid/threaded.rb +167 -59
- data/lib/mongoid/threaded/lifecycle.rb +21 -22
- data/lib/mongoid/threaded/sessions.rb +0 -0
- data/lib/mongoid/timestamps.rb +1 -1
- data/lib/mongoid/timestamps/created.rb +8 -4
- data/lib/mongoid/timestamps/timeless.rb +6 -4
- data/lib/mongoid/timestamps/updated.rb +3 -3
- data/lib/mongoid/unit_of_work.rb +61 -0
- data/lib/mongoid/validations.rb +27 -19
- data/lib/mongoid/validations/associated.rb +2 -2
- data/lib/mongoid/validations/format.rb +2 -2
- data/lib/mongoid/validations/presence.rb +31 -5
- data/lib/mongoid/validations/uniqueness.rb +9 -12
- data/lib/mongoid/version.rb +2 -2
- data/lib/mongoid/versioning.rb +25 -26
- data/lib/rack/mongoid/middleware/identity_map.rb +3 -3
- data/lib/rails/generators/mongoid/config/config_generator.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +59 -19
- data/lib/rails/generators/mongoid/model/model_generator.rb +7 -7
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +2 -2
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +4 -4
- data/lib/rails/generators/mongoid_generator.rb +5 -5
- data/lib/rails/mongoid.rb +69 -25
- metadata +110 -137
- checksums.yaml +0 -7
- data/lib/config/locales/bg.yml +0 -61
- data/lib/config/locales/de.yml +0 -61
- data/lib/config/locales/en-GB.yml +0 -64
- data/lib/config/locales/es.yml +0 -59
- data/lib/config/locales/fr.yml +0 -62
- data/lib/config/locales/hi.yml +0 -53
- data/lib/config/locales/hu.yml +0 -64
- data/lib/config/locales/id.yml +0 -62
- data/lib/config/locales/it.yml +0 -59
- data/lib/config/locales/ja.yml +0 -57
- data/lib/config/locales/kr.yml +0 -54
- data/lib/config/locales/nl.yml +0 -61
- data/lib/config/locales/pl.yml +0 -59
- data/lib/config/locales/pt-BR.yml +0 -60
- data/lib/config/locales/pt.yml +0 -60
- data/lib/config/locales/ro.yml +0 -66
- data/lib/config/locales/ru.yml +0 -61
- data/lib/config/locales/sv.yml +0 -60
- data/lib/config/locales/vi.yml +0 -62
- data/lib/config/locales/zh-CN.yml +0 -53
- data/lib/mongoid/collection.rb +0 -157
- data/lib/mongoid/collections.rb +0 -120
- data/lib/mongoid/collections/master.rb +0 -45
- data/lib/mongoid/collections/operations.rb +0 -44
- data/lib/mongoid/config/database.rb +0 -181
- data/lib/mongoid/config/replset_database.rb +0 -80
- data/lib/mongoid/contexts.rb +0 -25
- data/lib/mongoid/contexts/enumerable.rb +0 -313
- data/lib/mongoid/contexts/enumerable/sort.rb +0 -43
- data/lib/mongoid/contexts/mongo.rb +0 -487
- data/lib/mongoid/criterion/builder.rb +0 -34
- data/lib/mongoid/criterion/complex.rb +0 -84
- data/lib/mongoid/criterion/creational.rb +0 -34
- data/lib/mongoid/criterion/exclusion.rb +0 -110
- data/lib/mongoid/criterion/inclusion.rb +0 -290
- data/lib/mongoid/criterion/optional.rb +0 -259
- data/lib/mongoid/criterion/selector.rb +0 -177
- data/lib/mongoid/cursor.rb +0 -88
- data/lib/mongoid/default_scope.rb +0 -36
- data/lib/mongoid/errors/invalid_type.rb +0 -25
- data/lib/mongoid/extensions/array/deep_copy.rb +0 -25
- data/lib/mongoid/extensions/array/deletion.rb +0 -29
- data/lib/mongoid/extensions/false_class/equality.rb +0 -26
- data/lib/mongoid/extensions/hash/criteria_helpers.rb +0 -47
- data/lib/mongoid/extensions/hash/deep_copy.rb +0 -25
- data/lib/mongoid/extensions/hash/scoping.rb +0 -25
- data/lib/mongoid/extensions/integer/checks.rb +0 -23
- data/lib/mongoid/extensions/nil/collectionization.rb +0 -23
- data/lib/mongoid/extensions/object/checks.rb +0 -29
- data/lib/mongoid/extensions/object/deep_copy.rb +0 -21
- data/lib/mongoid/extensions/object/reflections.rb +0 -48
- data/lib/mongoid/extensions/object/substitutable.rb +0 -15
- data/lib/mongoid/extensions/object/yoda.rb +0 -44
- data/lib/mongoid/extensions/object_id/conversions.rb +0 -60
- data/lib/mongoid/extensions/proc/scoping.rb +0 -25
- data/lib/mongoid/extensions/string/checks.rb +0 -36
- data/lib/mongoid/extensions/string/conversions.rb +0 -22
- data/lib/mongoid/extensions/string/inflections.rb +0 -118
- data/lib/mongoid/extensions/symbol/checks.rb +0 -23
- data/lib/mongoid/extensions/symbol/inflections.rb +0 -67
- data/lib/mongoid/extensions/true_class/equality.rb +0 -26
- data/lib/mongoid/extras.rb +0 -31
- data/lib/mongoid/fields/internal/array.rb +0 -77
- data/lib/mongoid/fields/internal/big_decimal.rb +0 -63
- data/lib/mongoid/fields/internal/bignum.rb +0 -10
- data/lib/mongoid/fields/internal/binary.rb +0 -11
- data/lib/mongoid/fields/internal/boolean.rb +0 -58
- data/lib/mongoid/fields/internal/date.rb +0 -51
- data/lib/mongoid/fields/internal/date_time.rb +0 -28
- data/lib/mongoid/fields/internal/false_class.rb +0 -10
- data/lib/mongoid/fields/internal/fixnum.rb +0 -10
- data/lib/mongoid/fields/internal/float.rb +0 -47
- data/lib/mongoid/fields/internal/foreign_keys/array.rb +0 -88
- data/lib/mongoid/fields/internal/foreign_keys/object.rb +0 -56
- data/lib/mongoid/fields/internal/hash.rb +0 -11
- data/lib/mongoid/fields/internal/integer.rb +0 -59
- data/lib/mongoid/fields/internal/localized.rb +0 -62
- data/lib/mongoid/fields/internal/nil_class.rb +0 -53
- data/lib/mongoid/fields/internal/object.rb +0 -11
- data/lib/mongoid/fields/internal/object_id.rb +0 -46
- data/lib/mongoid/fields/internal/range.rb +0 -61
- data/lib/mongoid/fields/internal/set.rb +0 -57
- data/lib/mongoid/fields/internal/string.rb +0 -42
- data/lib/mongoid/fields/internal/symbol.rb +0 -43
- data/lib/mongoid/fields/internal/time.rb +0 -23
- data/lib/mongoid/fields/internal/time_with_zone.rb +0 -23
- data/lib/mongoid/fields/internal/timekeeping.rb +0 -122
- data/lib/mongoid/fields/internal/true_class.rb +0 -10
- data/lib/mongoid/fields/mappings.rb +0 -42
- data/lib/mongoid/fields/serializable.rb +0 -270
- data/lib/mongoid/identity.rb +0 -92
- data/lib/mongoid/keys.rb +0 -144
- data/lib/mongoid/logger.rb +0 -45
- data/lib/mongoid/multi_database.rb +0 -36
- data/lib/mongoid/named_scope.rb +0 -166
- data/lib/mongoid/relations/embedded/atomic.rb +0 -89
- data/lib/mongoid/relations/embedded/atomic/operation.rb +0 -63
- data/lib/mongoid/relations/embedded/atomic/pull.rb +0 -65
- data/lib/mongoid/relations/embedded/atomic/push_all.rb +0 -59
- data/lib/mongoid/relations/embedded/atomic/set.rb +0 -61
- data/lib/mongoid/relations/embedded/atomic/unset.rb +0 -41
- data/lib/mongoid/relations/referenced/batch.rb +0 -73
- data/lib/mongoid/relations/referenced/batch/insert.rb +0 -57
- data/lib/mongoid/safety.rb +0 -105
- data/lib/mongoid/scope.rb +0 -31
data/lib/config/locales/ru.yml
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
ru:
|
2
|
-
mongoid:
|
3
|
-
errors:
|
4
|
-
messages:
|
5
|
-
taken:
|
6
|
-
уже занят
|
7
|
-
callbacks:
|
8
|
-
"Calling %{method} on %{klass} resulted in a false return from a callback."
|
9
|
-
document_not_found:
|
10
|
-
Документ класса %{klass} с id %{identifiers} не найден.
|
11
|
-
eager_load:
|
12
|
-
"Eager loading :%{name} is not supported due to it being a many-to-many
|
13
|
-
or polymorphic belongs_to relation."
|
14
|
-
invalid_database:
|
15
|
-
База данных должна быть Mongo::DB, а не %{name}.
|
16
|
-
invalid_time:
|
17
|
-
"'%{value}' is not a valid Time."
|
18
|
-
invalid_type:
|
19
|
-
Поле уже было определено в классе %{klass}, но получено как %{other}
|
20
|
-
со значением %{value}.
|
21
|
-
invalid_options:
|
22
|
-
"Invalid option :%{invalid} provided to relation :%{name}. Valid options
|
23
|
-
are: %{valid}."
|
24
|
-
unsupported_version:
|
25
|
-
Версия MongoDB %{version} не поддерживается. Пожалуйста, обновитесь до
|
26
|
-
версии %{mongo_version}.
|
27
|
-
validations:
|
28
|
-
Документ не прошёл валидацию - %{errors}.
|
29
|
-
invalid_collection:
|
30
|
-
Доступ к коллекции для класса %{klass} запрещён, так как это вложенный
|
31
|
-
документ. Пожалуйста, обратитесь к коллекции через родительский документ.
|
32
|
-
invalid_field:
|
33
|
-
Определение поля с именем %{name} запрещено. Не определяйте поля
|
34
|
-
с именами совпадающими с внутренними атрибутами или методами Mongoid.
|
35
|
-
Используйте Document#instance_methods для просмотра запрещённых имён.
|
36
|
-
too_many_nested_attribute_records:
|
37
|
-
Accepting nested attributes для %{association} ограничено
|
38
|
-
%{limit} записями.
|
39
|
-
embedded_in_must_have_inverse_of:
|
40
|
-
Указание опции inverse_of для embedded_in ассоциации обязательно.
|
41
|
-
dependent_only_references_one_or_many:
|
42
|
-
Опция dependent => destroy|delete доступная только для
|
43
|
-
references_one или references_many ассоциаций.
|
44
|
-
association_cant_have_inverse_of:
|
45
|
-
Опция inverse_of не может использоваться с этой ассоциацией.
|
46
|
-
Используйте её с embedded_in или references_many ассоциациями.
|
47
|
-
calling_document_find_with_nil_is_invalid:
|
48
|
-
Вызов Document#find с nil запрещён
|
49
|
-
unsaved_document:
|
50
|
-
Вызов методов create или create! запрещён у реляционной ассоциации
|
51
|
-
(%{document}), у которой родитель (%{base}) не сохранён.
|
52
|
-
mixed_relations:
|
53
|
-
Referencing a(n) %{embedded} document from the %{root} document via a
|
54
|
-
relational association is not allowed since the %{embedded} is embedded.
|
55
|
-
no_environment:
|
56
|
-
"Mongoid attempted to find the appropriate environment but no Rails.env,
|
57
|
-
Sinatra::Base.environment, or RACK_ENV could be found."
|
58
|
-
scope_overwrite:
|
59
|
-
"Cannot create scope :%{scope_name}, because of existing method
|
60
|
-
%{model_name}.%{scope_name}."
|
61
|
-
blank_on_locale: "can't be blank in %{location}"
|
data/lib/config/locales/sv.yml
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
sv:
|
2
|
-
mongoid:
|
3
|
-
errors:
|
4
|
-
messages:
|
5
|
-
taken:
|
6
|
-
har redan använts
|
7
|
-
callbacks:
|
8
|
-
"Calling %{method} on %{klass} resulted in a false return from a callback."
|
9
|
-
document_not_found:
|
10
|
-
Inget dokument kunde hittas för klass %{klass} med id %{identifiers}.
|
11
|
-
eager_load:
|
12
|
-
"Eager loading :%{name} is not supported due to it being a many-to-many
|
13
|
-
or polymorphic belongs_to relation."
|
14
|
-
invalid_database:
|
15
|
-
Databasen bör vara Mongo::DB, inte %{name}.
|
16
|
-
invalid_time:
|
17
|
-
"'%{value}' is not a valid Time."
|
18
|
-
invalid_type:
|
19
|
-
Fältet var definerat som %{klass}, men fick %{other} med
|
20
|
-
värdet %{value}.
|
21
|
-
invalid_options:
|
22
|
-
"Invalid option :%{invalid} provided to relation :%{name}. Valid options
|
23
|
-
are: %{valid}."
|
24
|
-
unsupported_version:
|
25
|
-
MongoDB %{version} stöds ej, vänligen upgradera
|
26
|
-
till %{mongo_version}.
|
27
|
-
validations:
|
28
|
-
Validering misslyckades - %{errors}.
|
29
|
-
invalid_collection:
|
30
|
-
Tillgång till kollektionen för %{klass} är inte tillåten eftersom den
|
31
|
-
är ett inbäddat dokument, vänligen accessa kollektionen från
|
32
|
-
rotdokumentet.
|
33
|
-
invalid_field:
|
34
|
-
Att definera ett fält med namnet %{name} är inte tillåtet. Definera inte
|
35
|
-
fält som är i konflikt med Mongoids interna attribut eller metod
|
36
|
-
namn. Använd Document#instance_methods för att se vilka namn detta innefattar.
|
37
|
-
too_many_nested_attribute_records:
|
38
|
-
Acceptans av nästlade attribut för %{association} är begränsat
|
39
|
-
till %{limit} register.
|
40
|
-
embedded_in_must_have_inverse_of:
|
41
|
-
Alternativ för en embedded_in association måste innehålla inverse_of.
|
42
|
-
dependent_only_references_one_or_many:
|
43
|
-
Alternativet dependent => destroy|delete som angavs
|
44
|
-
är endast giltigt för references_one eller references_many associationer.
|
45
|
-
association_cant_have_inverse_of:
|
46
|
-
Att definera inverse_of på denna association är inte tillåtet. Använd
|
47
|
-
endast detta alternativ på embedded_in eller references_many as array.
|
48
|
-
unsaved_document:
|
49
|
-
You cannot call create or create! through a relational association
|
50
|
-
relation (%{document}) who's parent (%{base}) is not already saved.
|
51
|
-
mixed_relations:
|
52
|
-
Referencing a(n) %{embedded} document from the %{root} document via a
|
53
|
-
relational association is not allowed since the %{embedded} is embedded.
|
54
|
-
no_environment:
|
55
|
-
"Mongoid attempted to find the appropriate environment but no Rails.env,
|
56
|
-
Sinatra::Base.environment, or RACK_ENV could be found."
|
57
|
-
scope_overwrite:
|
58
|
-
"Cannot create scope :%{scope_name}, because of existing method
|
59
|
-
%{model_name}.%{scope_name}."
|
60
|
-
blank_on_locale: "can't be blank in %{location}"
|
data/lib/config/locales/vi.yml
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
vi:
|
2
|
-
mongoid:
|
3
|
-
errors:
|
4
|
-
messages:
|
5
|
-
taken:
|
6
|
-
đã bị lấy
|
7
|
-
callbacks:
|
8
|
-
"Calling %{method} on %{klass} resulted in a false return from a callback."
|
9
|
-
document_not_found:
|
10
|
-
Không tìm thấy văn bản cho lớp %{klass} với định danh %{identifiers}.
|
11
|
-
eager_load:
|
12
|
-
"Eager loading :%{name} is not supported due to it being a many-to-many
|
13
|
-
or polymorphic belongs_to relation."
|
14
|
-
invalid_database:
|
15
|
-
Cơ sở dữ liệu nên là Mongo::DB, không phải %{name}.
|
16
|
-
invalid_time:
|
17
|
-
"'%{value}' is not a valid Time."
|
18
|
-
invalid_type:
|
19
|
-
Trường được định nghĩa là một %{klass}, nhưng nhận được %{other} với
|
20
|
-
giá trị %{value}.
|
21
|
-
invalid_options:
|
22
|
-
"Invalid option :%{invalid} provided to relation :%{name}. Valid options
|
23
|
-
are: %{valid}."
|
24
|
-
unsupported_version:
|
25
|
-
MongoDB %{version} không được hỗ trợ, xin vui lòng nâng cấp
|
26
|
-
lên %{mongo_version}.
|
27
|
-
validations:
|
28
|
-
Kiểm định không thành công - %{errors}.
|
29
|
-
invalid_collection:
|
30
|
-
Không được phép truy cập tập văn bản cuả %{klass} vì đây
|
31
|
-
là một văn bản nhúng, xin vui lòng truy cập tập văn bản từ
|
32
|
-
văn bản gốc.
|
33
|
-
invalid_field:
|
34
|
-
Không được phép định nghĩa tên trường là %{name}. Không định nghĩa
|
35
|
-
tên trường trùng với các thuộc tính có sẵn hoặc các tên hàm cuả Mongoid.
|
36
|
-
Sử dụng Use Document#instance_methods để xem danh sách tên đã được dùng.
|
37
|
-
too_many_nested_attribute_records:
|
38
|
-
Số lượng các thuộc tính lồng cho %{association} bị giới hạn
|
39
|
-
ở %{limit} bản ghi.
|
40
|
-
embedded_in_must_have_inverse_of:
|
41
|
-
Phải cho thêm inverse_of vào lực chọn cuả kết hợp embedded_in.
|
42
|
-
dependent_only_references_one_or_many:
|
43
|
-
Lựa chọn dependent => destroy|delete
|
44
|
-
chỉ có hiệu lực với kết hợp references_one hoặc references_many.
|
45
|
-
association_cant_have_inverse_of:
|
46
|
-
Không được phép định nghĩa inverse_of cho kết hợp này. Chỉ
|
47
|
-
sử dụng lựa chọn này cho embedded_in or references_many as array.
|
48
|
-
calling_document_find_with_nil_is_invalid:
|
49
|
-
Không được phép gọi Document#find với giá trị nil
|
50
|
-
unsaved_document:
|
51
|
-
Bạn không được gọi create hoặc create! thông qua một quan hệ kết hợp
|
52
|
-
mà văn bản gốc (%{base}) chưa được lưu.
|
53
|
-
mixed_relations:
|
54
|
-
Không được phép tham chiếu một văn bản %{embedded} từ văn bản %{root} thông qua một
|
55
|
-
quan hệ kết hợp vì %{embedded} là kiểu nhúng.
|
56
|
-
no_environment:
|
57
|
-
"Mongoid attempted to find the appropriate environment but no Rails.env,
|
58
|
-
Sinatra::Base.environment, or RACK_ENV could be found."
|
59
|
-
scope_overwrite:
|
60
|
-
"Cannot create scope :%{scope_name}, because of existing method
|
61
|
-
%{model_name}.%{scope_name}."
|
62
|
-
blank_on_locale: "can't be blank in %{location}"
|
@@ -1,53 +0,0 @@
|
|
1
|
-
zh-CN:
|
2
|
-
mongoid:
|
3
|
-
errors:
|
4
|
-
messages:
|
5
|
-
blank:
|
6
|
-
不能为空
|
7
|
-
callbacks:
|
8
|
-
"Calling %{method} on %{klass} resulted in a false return from a callback."
|
9
|
-
taken:
|
10
|
-
已占用
|
11
|
-
document_not_found:
|
12
|
-
没有发现类是%{klass}id(s)是%{identifiers}的文档
|
13
|
-
eager_load:
|
14
|
-
"Eager loading :%{name} is not supported due to it being a many-to-many
|
15
|
-
or polymorphic belongs_to relation."
|
16
|
-
invalid_database:
|
17
|
-
数据库应该是Mongo::DB,而不是%{name}.
|
18
|
-
invalid_time:
|
19
|
-
"'%{value}' is not a valid Time."
|
20
|
-
invalid_type:
|
21
|
-
在类%{klass}中定义了字段,实际值是%{value}的%{other}.
|
22
|
-
invalid_options:
|
23
|
-
"Invalid option :%{invalid} provided to relation :%{name}. Valid options
|
24
|
-
are: %{valid}."
|
25
|
-
unsupported_version:
|
26
|
-
MongoDB %{version} 版本已过期,请升级到 %{mongo_version}.
|
27
|
-
validations:
|
28
|
-
校验失败 - %{errors}.
|
29
|
-
invalid_collection:
|
30
|
-
不允许直接访问嵌入式的集合%{klass} , 请从文档的根访问集合.
|
31
|
-
invalid_field:
|
32
|
-
字段的名字不允许为 %{name}. 你不应该定义跟Mongoid内部属性或者方法相同的名字,详细请看Use Document#instance_methods.
|
33
|
-
too_many_nested_attribute_records:
|
34
|
-
被关联的%{association} 嵌入式属性不能超过 %{limit}.
|
35
|
-
embedded_in_must_have_inverse_of:
|
36
|
-
embedded_in的关联属性必须包含inverse_of.
|
37
|
-
dependent_only_references_one_or_many:
|
38
|
-
dependent => destroy|delete 选项只有在references_one或者references_many时候有效.
|
39
|
-
association_cant_have_inverse_of:
|
40
|
-
在当前的关联中,不允许定义inverse_of去,其只有在embedded_in或者references_many是数组的情况下使用
|
41
|
-
unsaved_document:
|
42
|
-
You cannot call create or create! through a relational association
|
43
|
-
relation (%{document}) who's parent (%{base}) is not already saved.
|
44
|
-
mixed_relations:
|
45
|
-
Referencing a(n) %{embedded} document from the %{root} document via a
|
46
|
-
relational association is not allowed since the %{embedded} is embedded.
|
47
|
-
no_environment:
|
48
|
-
"Mongoid attempted to find the appropriate environment but no Rails.env,
|
49
|
-
Sinatra::Base.environment, or RACK_ENV could be found."
|
50
|
-
scope_overwrite:
|
51
|
-
"Cannot create scope :%{scope_name}, because of existing method
|
52
|
-
%{model_name}.%{scope_name}."
|
53
|
-
blank_on_locale: "can't be blank in %{location}"
|
data/lib/mongoid/collection.rb
DELETED
@@ -1,157 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "mongoid/collections/retry"
|
3
|
-
require "mongoid/collections/operations"
|
4
|
-
require "mongoid/collections/master"
|
5
|
-
|
6
|
-
module Mongoid #:nodoc
|
7
|
-
|
8
|
-
# This class is the Mongoid wrapper to the Mongo Ruby driver's collection
|
9
|
-
# object.
|
10
|
-
class Collection
|
11
|
-
attr_reader :counter, :klass, :name
|
12
|
-
|
13
|
-
# All write operations should delegate to the master connection. These
|
14
|
-
# operations mimic the methods on a Mongo:Collection.
|
15
|
-
#
|
16
|
-
# @example Delegate the operation.
|
17
|
-
# collection.save({ :name => "Al" })
|
18
|
-
delegate *(Collections::Operations::PROXIED.dup << {:to => :master})
|
19
|
-
|
20
|
-
# Get the unwrapped driver collection for this mongoid collection.
|
21
|
-
#
|
22
|
-
# @example Get the driver collection.
|
23
|
-
# collection.driver
|
24
|
-
#
|
25
|
-
# @return [ Mongo::Collection ] The driver collection.
|
26
|
-
#
|
27
|
-
# @since 2.2.0
|
28
|
-
def driver
|
29
|
-
master.collection
|
30
|
-
end
|
31
|
-
|
32
|
-
# Find documents from the database given a selector and options.
|
33
|
-
#
|
34
|
-
# @example Find documents in the collection.
|
35
|
-
# collection.find({ :test => "value" })
|
36
|
-
#
|
37
|
-
# @param [ Hash ] selector The query selector.
|
38
|
-
# @param [ Hash ] options The options to pass to the db.
|
39
|
-
#
|
40
|
-
# @return [ Cursor ] The results.
|
41
|
-
def find(selector = {}, options = {})
|
42
|
-
cursor = Mongoid::Cursor.new(klass, self, master(options).find(selector, options))
|
43
|
-
if block_given?
|
44
|
-
yield cursor; cursor.close
|
45
|
-
else
|
46
|
-
cursor
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
# Find the first document from the database given a selector and options.
|
51
|
-
#
|
52
|
-
# @example Find one document.
|
53
|
-
# collection.find_one({ :test => "value" })
|
54
|
-
#
|
55
|
-
# @param [ Hash ] selector The query selector.
|
56
|
-
# @param [ Hash ] options The options to pass to the db.
|
57
|
-
#
|
58
|
-
# @return [ Document, nil ] A matching document or nil if none found.
|
59
|
-
def find_one(selector = {}, options = {})
|
60
|
-
master(options).find_one(selector, options)
|
61
|
-
end
|
62
|
-
|
63
|
-
# Initialize a new Mongoid::Collection, setting up the master, slave, and
|
64
|
-
# name attributes. Masters will be used for writes, slaves for reads.
|
65
|
-
#
|
66
|
-
# @example Create the new collection.
|
67
|
-
# Collection.new(masters, slaves, "test")
|
68
|
-
#
|
69
|
-
# @param [ Class ] klass The class the collection is for.
|
70
|
-
# @param [ String ] name The name of the collection.
|
71
|
-
# @param [ Hash ] options The collection options.
|
72
|
-
#
|
73
|
-
# @option options [ true, false ] :capped If the collection is capped.
|
74
|
-
# @option options [ Integer ] :size The capped collection size.
|
75
|
-
# @option options [ Integer ] :max The maximum number of docs in the
|
76
|
-
# capped collection.
|
77
|
-
def initialize(klass, name, options = {})
|
78
|
-
@klass, @name, @options = klass, name, options || {}
|
79
|
-
end
|
80
|
-
|
81
|
-
# Inserts one or more documents in the collection.
|
82
|
-
#
|
83
|
-
# @example Insert documents.
|
84
|
-
# collection.insert(
|
85
|
-
# { "field" => "value" },
|
86
|
-
# :safe => true
|
87
|
-
# )
|
88
|
-
#
|
89
|
-
# @param [ Hash, Array<Hash> ] documents A single document or multiples.
|
90
|
-
# @param [ Hash ] options The options.
|
91
|
-
#
|
92
|
-
# @since 2.0.2, batch-relational-insert
|
93
|
-
def insert(documents, options = {})
|
94
|
-
consumer = Threaded.insert(name)
|
95
|
-
if consumer
|
96
|
-
consumer.consume(documents, options)
|
97
|
-
else
|
98
|
-
master(options).insert(documents, options)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
# Perform a map/reduce on the documents.
|
103
|
-
#
|
104
|
-
# @example Perform the map/reduce.
|
105
|
-
# collection.map_reduce(map, reduce)
|
106
|
-
#
|
107
|
-
# @param [ String ] map The map javascript function.
|
108
|
-
# @param [ String ] reduce The reduce javascript function.
|
109
|
-
# @param [ Hash ] options The options to pass to the db.
|
110
|
-
#
|
111
|
-
# @return [ Cursor ] The results.
|
112
|
-
def map_reduce(map, reduce, options = {})
|
113
|
-
master(options).map_reduce(map, reduce, options)
|
114
|
-
end
|
115
|
-
alias :mapreduce :map_reduce
|
116
|
-
|
117
|
-
# Return the object responsible for writes to the database. This will
|
118
|
-
# always return a collection associated with the Master DB.
|
119
|
-
#
|
120
|
-
# @example Get the master connection.
|
121
|
-
# collection.master
|
122
|
-
#
|
123
|
-
# @return [ Master ] The master connection.
|
124
|
-
def master(options = {})
|
125
|
-
options.delete(:cache)
|
126
|
-
db = Mongoid.databases[klass.database] || Mongoid.master
|
127
|
-
@master ||= Collections::Master.new(db, @name, @options)
|
128
|
-
end
|
129
|
-
|
130
|
-
# Updates one or more documents in the collection.
|
131
|
-
#
|
132
|
-
# @example Update documents.
|
133
|
-
# collection.update(
|
134
|
-
# { "_id" => BSON::OjectId.new },
|
135
|
-
# { "$push" => { "addresses" => { "_id" => "street" } } },
|
136
|
-
# :safe => true
|
137
|
-
# )
|
138
|
-
#
|
139
|
-
# @param [ Hash ] selector The document selector.
|
140
|
-
# @param [ Hash ] document The modifier.
|
141
|
-
# @param [ Hash ] options The options.
|
142
|
-
#
|
143
|
-
# @since 2.0.0
|
144
|
-
def update(selector, document, options = {})
|
145
|
-
updater = Threaded.update_consumer(name)
|
146
|
-
if updater
|
147
|
-
updater.consume(selector, document, options)
|
148
|
-
else
|
149
|
-
master(options).update(selector, document, options)
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
def drop(*args)
|
154
|
-
@master = nil if master.drop
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
data/lib/mongoid/collections.rb
DELETED
@@ -1,120 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Mongoid #:nodoc
|
3
|
-
|
4
|
-
# The collections module is used for providing functionality around setting
|
5
|
-
# up and updating collections.
|
6
|
-
module Collections
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included do
|
10
|
-
cattr_accessor :_collection, :collection_name
|
11
|
-
self.collection_name = self.name.collectionize
|
12
|
-
end
|
13
|
-
|
14
|
-
# Get the collection for the class.
|
15
|
-
#
|
16
|
-
# @note Defining methods instead of delegate to avoid calls to
|
17
|
-
# Kernel.caller for class load performance reasons.
|
18
|
-
#
|
19
|
-
# @example Get the collection.
|
20
|
-
# person.collection
|
21
|
-
#
|
22
|
-
# @return [ Collection ] The class collection.
|
23
|
-
#
|
24
|
-
# @since 1.0.0
|
25
|
-
def collection
|
26
|
-
self.class.collection
|
27
|
-
end
|
28
|
-
|
29
|
-
# Get the database for the class.
|
30
|
-
#
|
31
|
-
# @note Defining methods instead of delegate to avoid calls to
|
32
|
-
# Kernel.caller for class load performance reasons.
|
33
|
-
#
|
34
|
-
# @example Get the database.
|
35
|
-
# person.db
|
36
|
-
#
|
37
|
-
# @return [ DB ] The class db.
|
38
|
-
#
|
39
|
-
# @since 1.0.0
|
40
|
-
def db
|
41
|
-
self.class.db
|
42
|
-
end
|
43
|
-
|
44
|
-
module ClassMethods #:nodoc:
|
45
|
-
|
46
|
-
# Returns the collection associated with this +Document+. If the
|
47
|
-
# document is embedded, there will be no collection associated
|
48
|
-
# with it unless it's in a cyclic relation.
|
49
|
-
#
|
50
|
-
# @example Get the collection.
|
51
|
-
# Model.collection
|
52
|
-
#
|
53
|
-
# @return [ Collection ] The Mongoid collection wrapper.
|
54
|
-
def collection
|
55
|
-
raise Errors::InvalidCollection.new(self) if embedded? && !cyclic
|
56
|
-
self._collection || set_collection
|
57
|
-
add_indexes; self._collection
|
58
|
-
end
|
59
|
-
|
60
|
-
# Return the database associated with this collection.
|
61
|
-
#
|
62
|
-
# @example Get the database object.
|
63
|
-
# Model.db
|
64
|
-
#
|
65
|
-
# @return [ Mongo::DB ] The Mongo daatabase object.
|
66
|
-
def db
|
67
|
-
collection.db
|
68
|
-
end
|
69
|
-
|
70
|
-
# Convenience method for getting index information from the collection.
|
71
|
-
#
|
72
|
-
# @example Get the index information from the collection.
|
73
|
-
# Model.index_information
|
74
|
-
#
|
75
|
-
# @return [ Array ] The collection index information.
|
76
|
-
def index_information
|
77
|
-
collection.index_information
|
78
|
-
end
|
79
|
-
|
80
|
-
# Macro for setting the collection name to store in.
|
81
|
-
#
|
82
|
-
# @example Store in a separate collection than the default.
|
83
|
-
# Model.store_in :population
|
84
|
-
#
|
85
|
-
# @example Store in a capped collection.
|
86
|
-
# Model.store_in :population, :capped => true, :max => 10000
|
87
|
-
#
|
88
|
-
# @param [ Symbol ] name The name of the collection.
|
89
|
-
# @param [ Hash ] options The collection options.
|
90
|
-
#
|
91
|
-
# @option options [ true, false ] :capped If the collection is capped.
|
92
|
-
# @option options [ Integer ] :size The capped collection size.
|
93
|
-
# @option options [ Integer ] :max The maximum number of docs in the
|
94
|
-
# capped collection.
|
95
|
-
def store_in(name, options = {})
|
96
|
-
self.collection_name = name.to_s
|
97
|
-
set_collection(options)
|
98
|
-
end
|
99
|
-
|
100
|
-
protected
|
101
|
-
|
102
|
-
# Set the collection on the class.
|
103
|
-
#
|
104
|
-
# @example Set the collection.
|
105
|
-
# Model.set_collection
|
106
|
-
#
|
107
|
-
# @param [ Hash ] options The collection options.
|
108
|
-
#
|
109
|
-
# @option options [ true, false ] :capped If the collection is capped.
|
110
|
-
# @option options [ Integer ] :size The capped collection size.
|
111
|
-
# @option options [ Integer ] :max The maximum number of docs in the
|
112
|
-
# capped collection.
|
113
|
-
|
114
|
-
# @return [ Collection ] The Mongoid collection wrapper.
|
115
|
-
def set_collection(options = {})
|
116
|
-
self._collection = Collection.new(self, self.collection_name, options)
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|