mongoid 8.0.9 → 8.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +3 -3
- data/README.md +3 -3
- data/Rakefile +18 -67
- data/lib/config/locales/en.yml +46 -14
- data/lib/mongoid/association/accessors.rb +3 -7
- data/lib/mongoid/association/builders.rb +1 -1
- data/lib/mongoid/association/eager_loadable.rb +0 -3
- data/lib/mongoid/association/embedded/batchable.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +2 -1
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +3 -2
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +6 -6
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +1 -1
- data/lib/mongoid/association/macros.rb +0 -6
- data/lib/mongoid/association/nested/one.rb +40 -2
- data/lib/mongoid/association/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/counter_cache.rb +2 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +2 -2
- data/lib/mongoid/association/referenced/has_many/proxy.rb +3 -3
- data/lib/mongoid/association/reflections.rb +2 -2
- data/lib/mongoid/atomic.rb +7 -16
- data/lib/mongoid/attributes/dynamic.rb +1 -1
- data/lib/mongoid/attributes/nested.rb +2 -2
- data/lib/mongoid/attributes/processing.rb +5 -29
- data/lib/mongoid/attributes/projector.rb +1 -1
- data/lib/mongoid/attributes/readonly.rb +1 -1
- data/lib/mongoid/attributes.rb +8 -2
- data/lib/mongoid/changeable.rb +107 -5
- data/lib/mongoid/clients/storage_options.rb +2 -5
- data/lib/mongoid/clients/validators/storage.rb +1 -13
- data/lib/mongoid/collection_configurable.rb +58 -0
- data/lib/mongoid/composable.rb +2 -0
- data/lib/mongoid/config/defaults.rb +60 -0
- data/lib/mongoid/config/options.rb +0 -3
- data/lib/mongoid/config/validators/async_query_executor.rb +24 -0
- data/lib/mongoid/config/validators.rb +1 -0
- data/lib/mongoid/config.rb +88 -27
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +233 -33
- data/lib/mongoid/contextual/mongo/documents_loader.rb +177 -0
- data/lib/mongoid/contextual/mongo.rb +370 -133
- data/lib/mongoid/contextual/none.rb +162 -7
- data/lib/mongoid/contextual.rb +12 -0
- data/lib/mongoid/criteria/findable.rb +2 -2
- data/lib/mongoid/criteria/includable.rb +4 -3
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -15
- data/lib/mongoid/criteria/queryable/key.rb +1 -1
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -1
- data/lib/mongoid/criteria/queryable/optional.rb +8 -8
- data/lib/mongoid/criteria/queryable/selectable.rb +43 -12
- data/lib/mongoid/criteria/queryable/selector.rb +1 -1
- data/lib/mongoid/criteria/queryable/storable.rb +1 -1
- data/lib/mongoid/criteria.rb +6 -5
- data/lib/mongoid/deprecable.rb +1 -2
- data/lib/mongoid/deprecation.rb +3 -3
- data/lib/mongoid/document.rb +1 -8
- data/lib/mongoid/errors/create_collection_failure.rb +33 -0
- data/lib/mongoid/errors/drop_collection_failure.rb +27 -0
- data/lib/mongoid/errors/immutable_attribute.rb +26 -0
- data/lib/mongoid/errors/invalid_async_query_executor.rb +25 -0
- data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +22 -0
- data/lib/mongoid/errors/invalid_storage_parent.rb +2 -0
- data/lib/mongoid/errors.rb +4 -1
- data/lib/mongoid/extensions/hash.rb +2 -24
- data/lib/mongoid/extensions/object.rb +2 -2
- data/lib/mongoid/extensions/time.rb +2 -0
- data/lib/mongoid/fields/localized.rb +10 -0
- data/lib/mongoid/fields/standard.rb +10 -0
- data/lib/mongoid/fields.rb +59 -35
- data/lib/mongoid/findable.rb +27 -3
- data/lib/mongoid/interceptable.rb +6 -116
- data/lib/mongoid/matcher/eq_impl.rb +1 -1
- data/lib/mongoid/matcher/type.rb +1 -1
- data/lib/mongoid/persistable/creatable.rb +1 -0
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/persistable/savable.rb +13 -1
- data/lib/mongoid/persistable/unsettable.rb +2 -2
- data/lib/mongoid/persistable/updatable.rb +51 -1
- data/lib/mongoid/persistable/upsertable.rb +20 -1
- data/lib/mongoid/persistable.rb +3 -0
- data/lib/mongoid/query_cache.rb +5 -1
- data/lib/mongoid/railties/database.rake +7 -2
- data/lib/mongoid/reloadable.rb +5 -3
- data/lib/mongoid/stateful.rb +22 -1
- data/lib/mongoid/tasks/database.rake +12 -0
- data/lib/mongoid/tasks/database.rb +20 -0
- data/lib/mongoid/timestamps/created.rb +1 -8
- data/lib/mongoid/traversable.rb +0 -12
- data/lib/mongoid/utils.rb +22 -0
- data/lib/mongoid/validatable/associated.rb +17 -98
- data/lib/mongoid/validatable/macros.rb +5 -5
- data/lib/mongoid/validatable.rb +4 -9
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +17 -1
- data/lib/mongoid.rb +16 -3
- data/spec/integration/app_spec.rb +2 -2
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +0 -40
- data/spec/integration/callbacks_spec.rb +99 -12
- data/spec/integration/discriminator_key_spec.rb +4 -5
- data/spec/integration/i18n_fallbacks_spec.rb +3 -2
- data/spec/mongoid/association/eager_spec.rb +2 -24
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +27 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +20 -25
- data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -4
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +15 -2
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2 -18
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +5 -27
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +9 -50
- data/spec/mongoid/association/syncable_spec.rb +1 -1
- data/spec/mongoid/association_spec.rb +0 -60
- data/spec/mongoid/attributes_spec.rb +3 -33
- data/spec/mongoid/changeable_spec.rb +299 -24
- data/spec/mongoid/clients_spec.rb +122 -13
- data/spec/mongoid/collection_configurable_spec.rb +158 -0
- data/spec/mongoid/config/defaults_spec.rb +160 -0
- data/spec/mongoid/config_spec.rb +154 -27
- data/spec/mongoid/contextual/memory_spec.rb +332 -76
- data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +187 -0
- data/spec/mongoid/contextual/mongo_spec.rb +1009 -125
- data/spec/mongoid/contextual/none_spec.rb +49 -2
- data/spec/mongoid/copyable_spec.rb +2 -10
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +4 -10
- data/spec/mongoid/criteria/queryable/options_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +419 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/selector_spec.rb +3 -76
- data/spec/mongoid/criteria/queryable/storable_spec.rb +0 -72
- data/spec/mongoid/criteria_projection_spec.rb +1 -4
- data/spec/mongoid/criteria_spec.rb +5 -9
- data/spec/mongoid/document_spec.rb +0 -27
- data/spec/mongoid/errors/readonly_document_spec.rb +2 -2
- data/spec/mongoid/extensions/hash_spec.rb +3 -3
- data/spec/mongoid/extensions/time_spec.rb +8 -43
- data/spec/mongoid/extensions/time_with_zone_spec.rb +7 -52
- data/spec/mongoid/fields/localized_spec.rb +46 -28
- data/spec/mongoid/fields_spec.rb +136 -77
- data/spec/mongoid/findable_spec.rb +391 -34
- data/spec/mongoid/indexable_spec.rb +16 -10
- data/spec/mongoid/interceptable_spec.rb +153 -442
- data/spec/mongoid/interceptable_spec_models.rb +111 -51
- data/spec/mongoid/persistable/deletable_spec.rb +26 -6
- data/spec/mongoid/persistable/destroyable_spec.rb +26 -6
- data/spec/mongoid/persistable/incrementable_spec.rb +37 -0
- data/spec/mongoid/persistable/logical_spec.rb +37 -0
- data/spec/mongoid/persistable/poppable_spec.rb +36 -0
- data/spec/mongoid/persistable/pullable_spec.rb +72 -0
- data/spec/mongoid/persistable/pushable_spec.rb +72 -0
- data/spec/mongoid/persistable/renamable_spec.rb +36 -0
- data/spec/mongoid/persistable/savable_spec.rb +96 -0
- data/spec/mongoid/persistable/settable_spec.rb +37 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +36 -0
- data/spec/mongoid/persistable/updatable_spec.rb +20 -28
- data/spec/mongoid/persistable/upsertable_spec.rb +80 -6
- data/spec/mongoid/persistence_context_spec.rb +7 -57
- data/spec/mongoid/query_cache_spec.rb +56 -61
- data/spec/mongoid/reloadable_spec.rb +24 -28
- data/spec/mongoid/scopable_spec.rb +70 -0
- data/spec/mongoid/serializable_spec.rb +23 -44
- data/spec/mongoid/stateful_spec.rb +122 -8
- data/spec/mongoid/tasks/database_rake_spec.rb +74 -0
- data/spec/mongoid/tasks/database_spec.rb +127 -0
- data/spec/mongoid/timestamps/created_spec.rb +0 -23
- data/spec/mongoid/timestamps_spec.rb +9 -11
- data/spec/mongoid/touchable_spec.rb +277 -5
- data/spec/mongoid/touchable_spec_models.rb +3 -1
- data/spec/mongoid/traversable_spec.rb +9 -24
- data/spec/mongoid/validatable/associated_spec.rb +34 -27
- data/spec/mongoid/validatable/uniqueness_spec.rb +2 -3
- data/spec/mongoid_spec.rb +36 -10
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +231 -0
- data/spec/shared/lib/mrss/constraints.rb +378 -0
- data/spec/shared/lib/mrss/docker_runner.rb +298 -0
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +210 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +238 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +113 -0
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
- data/spec/shared/lib/mrss/utils.rb +37 -0
- data/spec/shared/share/Dockerfile.erb +321 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/distro.sh +74 -0
- data/spec/shared/shlib/server.sh +416 -0
- data/spec/shared/shlib/set_env.sh +169 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/support/immutable_ids.rb +118 -0
- data/spec/support/macros.rb +47 -15
- data/spec/support/models/artist.rb +0 -1
- data/spec/support/models/band.rb +1 -0
- data/spec/support/models/book.rb +1 -0
- data/spec/support/models/building.rb +2 -0
- data/spec/support/models/cover.rb +10 -0
- data/spec/support/models/name.rb +0 -10
- data/spec/support/models/person.rb +0 -1
- data/spec/support/models/product.rb +1 -0
- data.tar.gz.sig +0 -0
- metadata +746 -636
- metadata.gz.sig +2 -0
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -60
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -60
- data/spec/support/models/purse.rb +0 -9
@@ -531,9 +531,9 @@ describe Mongoid::Traversable do
|
|
531
531
|
end
|
532
532
|
|
533
533
|
context "before class creation" do
|
534
|
-
|
535
|
-
Mongoid.discriminator_key = "test"
|
534
|
+
config_override :discriminator_key, "test"
|
536
535
|
|
536
|
+
before do
|
537
537
|
class PreGlobalDiscriminatorParent
|
538
538
|
include Mongoid::Document
|
539
539
|
end
|
@@ -542,10 +542,6 @@ describe Mongoid::Traversable do
|
|
542
542
|
end
|
543
543
|
end
|
544
544
|
|
545
|
-
after do
|
546
|
-
Mongoid.discriminator_key = "_type"
|
547
|
-
end
|
548
|
-
|
549
545
|
it "creates a field with new discriminator key in the parent" do
|
550
546
|
expect(PreGlobalDiscriminatorParent.fields.keys).to include("test")
|
551
547
|
end
|
@@ -677,9 +673,9 @@ describe Mongoid::Traversable do
|
|
677
673
|
end
|
678
674
|
|
679
675
|
context "before class creation" do
|
680
|
-
|
681
|
-
Mongoid.discriminator_key = :test
|
676
|
+
config_override :discriminator_key, :test
|
682
677
|
|
678
|
+
before do
|
683
679
|
class PreGlobalSymDiscriminatorParent
|
684
680
|
include Mongoid::Document
|
685
681
|
end
|
@@ -688,10 +684,6 @@ describe Mongoid::Traversable do
|
|
688
684
|
end
|
689
685
|
end
|
690
686
|
|
691
|
-
after do
|
692
|
-
Mongoid.discriminator_key = "_type"
|
693
|
-
end
|
694
|
-
|
695
687
|
it "creates a field with new discriminator key as a string in the parent" do
|
696
688
|
expect(PreGlobalSymDiscriminatorParent.fields.keys).to include("test")
|
697
689
|
end
|
@@ -829,8 +821,9 @@ describe Mongoid::Traversable do
|
|
829
821
|
end
|
830
822
|
|
831
823
|
context "when setting a field equal to discriminator key and duplicate_fields_exception is true" do
|
824
|
+
config_override :duplicate_fields_exception, true
|
825
|
+
|
832
826
|
before do
|
833
|
-
Mongoid.duplicate_fields_exception = true
|
834
827
|
|
835
828
|
class DuplicateDiscriminatorKeyParent
|
836
829
|
include Mongoid::Document
|
@@ -841,10 +834,6 @@ describe Mongoid::Traversable do
|
|
841
834
|
end
|
842
835
|
end
|
843
836
|
|
844
|
-
after do
|
845
|
-
Mongoid.duplicate_fields_exception = false
|
846
|
-
end
|
847
|
-
|
848
837
|
it "does not raise an error" do
|
849
838
|
expect do
|
850
839
|
DuplicateDiscriminatorKeyParent.discriminator_key = "dkey"
|
@@ -871,9 +860,10 @@ describe Mongoid::Traversable do
|
|
871
860
|
end
|
872
861
|
|
873
862
|
context "when setting a field equal to global discriminator key and duplicate_fields_exception is true" do
|
863
|
+
config_override :duplicate_fields_exception, true
|
864
|
+
config_override :discriminator_key, "dkey"
|
865
|
+
|
874
866
|
before do
|
875
|
-
Mongoid.duplicate_fields_exception = true
|
876
|
-
Mongoid.discriminator_key = "dkey"
|
877
867
|
|
878
868
|
class GlobalDuplicateDiscriminatorKeyParent
|
879
869
|
include Mongoid::Document
|
@@ -883,11 +873,6 @@ describe Mongoid::Traversable do
|
|
883
873
|
end
|
884
874
|
end
|
885
875
|
|
886
|
-
after do
|
887
|
-
Mongoid.duplicate_fields_exception = false
|
888
|
-
Mongoid.discriminator_key = "_type"
|
889
|
-
end
|
890
|
-
|
891
876
|
it "raises an error" do
|
892
877
|
expect do
|
893
878
|
GlobalDuplicateDiscriminatorKeyParent.class_eval do
|
@@ -37,18 +37,12 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
37
37
|
User.new(name: "test")
|
38
38
|
end
|
39
39
|
|
40
|
-
let(:
|
41
|
-
Description.new
|
42
|
-
end
|
43
|
-
|
44
|
-
let(:description2) do
|
40
|
+
let(:description) do
|
45
41
|
Description.new
|
46
42
|
end
|
47
43
|
|
48
44
|
before do
|
49
|
-
user.descriptions <<
|
50
|
-
user.descriptions << description2
|
51
|
-
user.valid?
|
45
|
+
user.descriptions << description
|
52
46
|
end
|
53
47
|
|
54
48
|
it "only validates the parent once" do
|
@@ -56,16 +50,12 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
56
50
|
end
|
57
51
|
|
58
52
|
it "adds the errors from the relation" do
|
53
|
+
user.valid?
|
59
54
|
expect(user.errors[:descriptions]).to_not be_nil
|
60
55
|
end
|
61
56
|
|
62
|
-
it 'reports all failed validations' do
|
63
|
-
errors = user.descriptions.flat_map { |d| d.errors[:details] }
|
64
|
-
expect(errors.length).to be == 2
|
65
|
-
end
|
66
|
-
|
67
57
|
it "only validates the child once" do
|
68
|
-
expect(
|
58
|
+
expect(description).to_not be_valid
|
69
59
|
end
|
70
60
|
end
|
71
61
|
|
@@ -85,6 +75,7 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
85
75
|
end
|
86
76
|
|
87
77
|
it "does not run validation on them" do
|
78
|
+
expect(description).to receive(:valid?).never
|
88
79
|
expect(user).to be_valid
|
89
80
|
end
|
90
81
|
|
@@ -93,14 +84,14 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
93
84
|
end
|
94
85
|
end
|
95
86
|
|
96
|
-
describe "#
|
87
|
+
describe "#validate_each" do
|
97
88
|
|
98
89
|
let(:person) do
|
99
90
|
Person.new
|
100
91
|
end
|
101
92
|
|
102
93
|
let(:validator) do
|
103
|
-
described_class.new(attributes: person.
|
94
|
+
described_class.new(attributes: person.attributes)
|
104
95
|
end
|
105
96
|
|
106
97
|
context "when the association is a one to one" do
|
@@ -108,7 +99,7 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
108
99
|
context "when the association is nil" do
|
109
100
|
|
110
101
|
before do
|
111
|
-
validator.
|
102
|
+
validator.validate_each(person, :name, nil)
|
112
103
|
end
|
113
104
|
|
114
105
|
it "adds no errors" do
|
@@ -117,9 +108,14 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
117
108
|
end
|
118
109
|
|
119
110
|
context "when the association is valid" do
|
111
|
+
|
112
|
+
let(:associated) do
|
113
|
+
double(valid?: true, flagged_for_destroy?: false)
|
114
|
+
end
|
115
|
+
|
120
116
|
before do
|
121
|
-
|
122
|
-
validator.
|
117
|
+
expect(associated).to receive(:validated?).and_return(false)
|
118
|
+
validator.validate_each(person, :name, associated)
|
123
119
|
end
|
124
120
|
|
125
121
|
it "adds no errors" do
|
@@ -129,9 +125,13 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
129
125
|
|
130
126
|
context "when the association is invalid" do
|
131
127
|
|
128
|
+
let(:associated) do
|
129
|
+
double(valid?: false, flagged_for_destroy?: false)
|
130
|
+
end
|
131
|
+
|
132
132
|
before do
|
133
|
-
|
134
|
-
validator.
|
133
|
+
expect(associated).to receive(:validated?).and_return(false)
|
134
|
+
validator.validate_each(person, :name, associated)
|
135
135
|
end
|
136
136
|
|
137
137
|
it "adds errors to the parent document" do
|
@@ -149,7 +149,7 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
149
149
|
context "when the association is empty" do
|
150
150
|
|
151
151
|
before do
|
152
|
-
validator.
|
152
|
+
validator.validate_each(person, :addresses, [])
|
153
153
|
end
|
154
154
|
|
155
155
|
it "adds no errors" do
|
@@ -159,9 +159,13 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
159
159
|
|
160
160
|
context "when the association has invalid documents" do
|
161
161
|
|
162
|
+
let(:associated) do
|
163
|
+
double(valid?: false, flagged_for_destroy?: false)
|
164
|
+
end
|
165
|
+
|
162
166
|
before do
|
163
|
-
|
164
|
-
validator.
|
167
|
+
expect(associated).to receive(:validated?).and_return(false)
|
168
|
+
validator.validate_each(person, :addresses, [ associated ])
|
165
169
|
end
|
166
170
|
|
167
171
|
it "adds errors to the parent document" do
|
@@ -171,10 +175,13 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
171
175
|
|
172
176
|
context "when the association has all valid documents" do
|
173
177
|
|
178
|
+
let(:associated) do
|
179
|
+
double(valid?: true, flagged_for_destroy?: false)
|
180
|
+
end
|
181
|
+
|
174
182
|
before do
|
175
|
-
|
176
|
-
person
|
177
|
-
validator.validate(person)
|
183
|
+
expect(associated).to receive(:validated?).and_return(false)
|
184
|
+
validator.validate_each(person, :addresses, [ associated ])
|
178
185
|
end
|
179
186
|
|
180
187
|
it "adds no errors" do
|
@@ -2476,11 +2476,10 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2476
2476
|
describe "i18n" do
|
2477
2477
|
|
2478
2478
|
context 'when using a different locale' do
|
2479
|
-
|
2480
|
-
I18n.with_locale(:fr) { example.run }
|
2481
|
-
end
|
2479
|
+
with_default_i18n_configs
|
2482
2480
|
|
2483
2481
|
before do
|
2482
|
+
I18n.locale = :fr
|
2484
2483
|
# Translation key location is as per rails-i18n gem.
|
2485
2484
|
# See: https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml
|
2486
2485
|
I18n.backend.store_translations(:fr, { errors: { messages: { taken: 'est déjà utilisé(e)' } } })
|
data/spec/mongoid_spec.rb
CHANGED
@@ -13,22 +13,46 @@ describe Mongoid do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
context "when a block is
|
16
|
+
context "when a block is given" do
|
17
|
+
config_override :preload_models, false
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
context "with arity 0" do
|
20
|
+
|
21
|
+
before do
|
22
|
+
Mongoid.configure do
|
23
|
+
config.preload_models = true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it "sets the values on the config instance" do
|
28
|
+
expect(Mongoid.preload_models).to be true
|
21
29
|
end
|
22
30
|
end
|
23
31
|
|
24
|
-
|
25
|
-
|
26
|
-
|
32
|
+
context "with arity 1" do
|
33
|
+
|
34
|
+
before do
|
35
|
+
Mongoid.configure do |config|
|
36
|
+
config.preload_models = true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it "sets the values on the config instance" do
|
41
|
+
expect(Mongoid.preload_models).to be true
|
27
42
|
end
|
28
43
|
end
|
29
44
|
|
30
|
-
|
31
|
-
|
45
|
+
context "with arity 2" do
|
46
|
+
|
47
|
+
before do
|
48
|
+
Mongoid.configure do |config, _other|
|
49
|
+
config.preload_models = true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it "sets the values on the config instance" do
|
54
|
+
expect(Mongoid.preload_models).to be true
|
55
|
+
end
|
32
56
|
end
|
33
57
|
end
|
34
58
|
end
|
@@ -51,8 +75,10 @@ describe Mongoid do
|
|
51
75
|
end
|
52
76
|
|
53
77
|
it "disconnects from all active clients" do
|
78
|
+
pending 'https://jira.mongodb.org/browse/MONGOID-5621'
|
79
|
+
|
54
80
|
clients.each do |client|
|
55
|
-
expect(client).to receive(:
|
81
|
+
expect(client.cluster).to receive(:disconnect!).and_call_original
|
56
82
|
end
|
57
83
|
Mongoid.disconnect_clients
|
58
84
|
end
|
data/spec/shared/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2020 MongoDB, Inc.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
desired_version, arch = ARGV
|
4
|
+
if arch.nil?
|
5
|
+
STDERR.puts "Usage: get-mongodb-download-url desired-version arch"
|
6
|
+
exit 1
|
7
|
+
end
|
8
|
+
|
9
|
+
$: << File.join(File.dirname(__FILE__), '../lib')
|
10
|
+
require 'mrss/server_version_registry'
|
11
|
+
|
12
|
+
begin
|
13
|
+
puts Mrss::ServerVersionRegistry.new(desired_version, arch).download_url
|
14
|
+
rescue Mrss::ServerVersionRegistry::Error => exc
|
15
|
+
STDERR.puts "Error: #{exc}"
|
16
|
+
exit 2
|
17
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
require 'aws-sdk-s3'
|
5
|
+
|
6
|
+
options = {}
|
7
|
+
OptionParser.new do |opts|
|
8
|
+
opts.banner = "Usage: s3-copy options"
|
9
|
+
|
10
|
+
opts.on("-r", "--region=REGION", "AWS region to use (default us-east-1)") do |v|
|
11
|
+
options[:region] = v
|
12
|
+
end
|
13
|
+
|
14
|
+
opts.on("-p", "--param=KEY=VALUE", "Specify parameter for new files") do |v|
|
15
|
+
options[:params] ||= {}
|
16
|
+
k, v = v.split('=', 2)
|
17
|
+
options[:params][k.to_sym] = v
|
18
|
+
end
|
19
|
+
|
20
|
+
opts.on("-f", "--from=BUCKET:PATH", "Bucket name and key (or path) to copy from") do |v|
|
21
|
+
options[:from] = v
|
22
|
+
end
|
23
|
+
|
24
|
+
opts.on("-t", "--to=BUCKET:PATH", "Bucket name and key (or path) to write to (may be specified more than once)") do |v|
|
25
|
+
options[:to] ||= []
|
26
|
+
options[:to] << v
|
27
|
+
end
|
28
|
+
end.parse!
|
29
|
+
|
30
|
+
ENV['AWS_REGION'] ||= options[:region] || 'us-east-1'
|
31
|
+
|
32
|
+
bucket, key = options.fetch(:from).split(':', 2)
|
33
|
+
|
34
|
+
s3 = Aws::S3::Client.new
|
35
|
+
|
36
|
+
options.fetch(:to).each do |dest|
|
37
|
+
STDERR.puts "Copying to #{dest}"
|
38
|
+
dbucket, dkey = dest.split(':', 2)
|
39
|
+
s3.copy_object(
|
40
|
+
bucket: dbucket,
|
41
|
+
key: dkey,
|
42
|
+
copy_source: "/#{bucket}/#{key}",
|
43
|
+
**options[:params] || {},
|
44
|
+
)
|
45
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
require 'aws-sdk-s3'
|
5
|
+
|
6
|
+
options = {}
|
7
|
+
OptionParser.new do |opts|
|
8
|
+
opts.banner = "Usage: s3-upload options"
|
9
|
+
|
10
|
+
opts.on("-r", "--region=REGION", "AWS region to use (default us-east-1)") do |v|
|
11
|
+
options[:region] = v
|
12
|
+
end
|
13
|
+
|
14
|
+
opts.on("-p", "--param=KEY=VALUE", "Specify parameter for S3 upload") do |v|
|
15
|
+
options[:params] ||= {}
|
16
|
+
k, v = v.split('=', 2)
|
17
|
+
options[:params][k.to_sym] = v
|
18
|
+
end
|
19
|
+
|
20
|
+
opts.on("-f", "--file=PATH", "Path to the file to upload, - to upload standard input") do |v|
|
21
|
+
options[:file] = v
|
22
|
+
end
|
23
|
+
|
24
|
+
opts.on("-w", "--write=BUCKET:PATH", "Bucket name and key (or path) to upload to") do |v|
|
25
|
+
options[:write] = v
|
26
|
+
end
|
27
|
+
|
28
|
+
opts.on("-c", "--copy=BUCKET:PATH", "Bucket name and key (or path) to copy to (may be specified more than once)") do |v|
|
29
|
+
options[:copy] ||= []
|
30
|
+
options[:copy] << v
|
31
|
+
end
|
32
|
+
end.parse!
|
33
|
+
|
34
|
+
ENV['AWS_REGION'] ||= options[:region] || 'us-east-1'
|
35
|
+
|
36
|
+
def upload(f, options)
|
37
|
+
s3 = Aws::S3::Client.new
|
38
|
+
write = options.fetch(:write)
|
39
|
+
STDERR.puts "Writing #{write}"
|
40
|
+
bucket, key = write.split(':', 2)
|
41
|
+
s3.put_object(
|
42
|
+
body: f.read,
|
43
|
+
bucket: bucket,
|
44
|
+
key: key,
|
45
|
+
**options[:params] || {},
|
46
|
+
)
|
47
|
+
if copy = options[:copy]
|
48
|
+
copy.each do |dest|
|
49
|
+
STDERR.puts "Copying to #{dest}"
|
50
|
+
dbucket, dkey = dest.split(':', 2)
|
51
|
+
s3.copy_object(
|
52
|
+
bucket: dbucket,
|
53
|
+
key: dkey,
|
54
|
+
copy_source: "/#{bucket}/#{key}",
|
55
|
+
**options[:params] || {},
|
56
|
+
)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
if options[:file] == '-'
|
62
|
+
upload(STDIN, options)
|
63
|
+
elsif options[:file]
|
64
|
+
File.open(options[:file]) do |f|
|
65
|
+
upload(f, options)
|
66
|
+
end
|
67
|
+
else
|
68
|
+
upload(STDIN, options)
|
69
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
autoload :ChildProcess, 'childprocess'
|
5
|
+
autoload :Tempfile, 'tempfile'
|
6
|
+
|
7
|
+
module Mrss
|
8
|
+
module ChildProcessHelper
|
9
|
+
class SpawnError < StandardError; end
|
10
|
+
|
11
|
+
module_function def call(cmd, env: nil, cwd: nil)
|
12
|
+
process = ChildProcess.new(*cmd)
|
13
|
+
process.io.inherit!
|
14
|
+
if cwd
|
15
|
+
process.cwd = cwd
|
16
|
+
end
|
17
|
+
if env
|
18
|
+
env.each do |k, v|
|
19
|
+
process.environment[k.to_s] = v
|
20
|
+
end
|
21
|
+
end
|
22
|
+
process.start
|
23
|
+
process.wait
|
24
|
+
process
|
25
|
+
end
|
26
|
+
|
27
|
+
module_function def check_call(cmd, env: nil, cwd: nil)
|
28
|
+
process = call(cmd, env: env, cwd: cwd)
|
29
|
+
unless process.exit_code == 0
|
30
|
+
raise SpawnError, "Failed to execute: #{cmd}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module_function def get_output(cmd, env: nil, cwd: nil)
|
35
|
+
process = ChildProcess.new(*cmd)
|
36
|
+
process.io.inherit!
|
37
|
+
if cwd
|
38
|
+
process.cwd = cwd
|
39
|
+
end
|
40
|
+
if env
|
41
|
+
env.each do |k, v|
|
42
|
+
process.environment[k.to_s] = v
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
output = ''
|
47
|
+
r, w = IO.pipe
|
48
|
+
|
49
|
+
begin
|
50
|
+
process.io.stdout = w
|
51
|
+
process.start
|
52
|
+
w.close
|
53
|
+
|
54
|
+
thread = Thread.new do
|
55
|
+
begin
|
56
|
+
loop do
|
57
|
+
output << r.readpartial(16384)
|
58
|
+
end
|
59
|
+
rescue EOFError
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
process.wait
|
64
|
+
thread.join
|
65
|
+
ensure
|
66
|
+
r.close
|
67
|
+
end
|
68
|
+
|
69
|
+
[process, output]
|
70
|
+
end
|
71
|
+
|
72
|
+
module_function def check_output(*args)
|
73
|
+
process, output = get_output(*args)
|
74
|
+
unless process.exit_code == 0
|
75
|
+
raise SpawnError,"Failed to execute: #{args}"
|
76
|
+
end
|
77
|
+
output
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|