mongo 2.19.1 → 2.19.3
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/lib/mongo/collection/view/iterable.rb +15 -0
- data/lib/mongo/collection/view.rb +1 -0
- data/lib/mongo/collection.rb +23 -1
- data/lib/mongo/operation/create_search_indexes/op_msg.rb +31 -0
- data/lib/mongo/operation/create_search_indexes.rb +15 -0
- data/lib/mongo/operation/drop_search_index/op_msg.rb +33 -0
- data/lib/mongo/operation/drop_search_index.rb +15 -0
- data/lib/mongo/operation/shared/specifiable.rb +7 -0
- data/lib/mongo/operation/update_search_index/op_msg.rb +34 -0
- data/lib/mongo/operation/update_search_index.rb +15 -0
- data/lib/mongo/operation.rb +3 -0
- data/lib/mongo/search_index/view.rb +232 -0
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo.rb +1 -0
- data/spec/atlas/atlas_connectivity_spec.rb +1 -5
- data/spec/atlas/operations_spec.rb +1 -5
- data/spec/integration/find_options_spec.rb +227 -0
- data/spec/integration/search_indexes_prose_spec.rb +168 -0
- data/spec/lite_spec_helper.rb +32 -10
- data/spec/runners/unified/search_index_operations.rb +63 -0
- data/spec/runners/unified/test.rb +3 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/spec_tests/data/index_management/createSearchIndex.yml +62 -0
- data/spec/spec_tests/data/index_management/createSearchIndexes.yml +83 -0
- data/spec/spec_tests/data/index_management/dropSearchIndex.yml +42 -0
- data/spec/spec_tests/data/index_management/listSearchIndexes.yml +85 -0
- data/spec/spec_tests/data/index_management/updateSearchIndex.yml +45 -0
- data/spec/spec_tests/index_management_unified_spec.rb +13 -0
- data/spec/support/faas/app/aws_lambda/mongodb/Gemfile.lock +19 -0
- data/spec/support/spec_config.rb +5 -0
- data.tar.gz.sig +0 -0
- metadata +1277 -1250
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0916a285c62c2e70c94532ca2ed61af6bfcb1ead971a2be825aefbde560209c3'
|
4
|
+
data.tar.gz: a9db987bb6f1e2b7e9882c86472bc2c8b10eca0d4bdca9de2a37968de086d8f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab6a8e7e008174f346f1acd96bb073a39cd4fbdd2a70e44f63f8dcdc421c4d38ba9277cc9c50099c944599886e53230597bdab8bd4c861de29af2bd66dd2be76
|
7
|
+
data.tar.gz: 8fe9155b17bbb9b57021eabd7e2211baf2cb0002b211900e8564e0b1c2f9e894bf726a037b1e8b72e6dd55251edefe1e81fd8c3ea61aacd0fd5d7eb76cbc4163
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -185,6 +185,8 @@ module Mongo
|
|
185
185
|
collection.client.log_warn("The :oplog_replay option is deprecated and ignored by MongoDB 4.4 and later")
|
186
186
|
end
|
187
187
|
|
188
|
+
maybe_set_tailable_options(spec)
|
189
|
+
|
188
190
|
if explained?
|
189
191
|
spec[:explain] = options[:explain]
|
190
192
|
Operation::Explain.new(spec)
|
@@ -200,6 +202,19 @@ module Mongo
|
|
200
202
|
def use_query_cache?
|
201
203
|
QueryCache.enabled? && !collection.system_collection?
|
202
204
|
end
|
205
|
+
|
206
|
+
# Add tailable cusror options to the command specifiction if needed.
|
207
|
+
#
|
208
|
+
# @param [ Hash ] spec The command specification.
|
209
|
+
def maybe_set_tailable_options(spec)
|
210
|
+
case cursor_type
|
211
|
+
when :tailable
|
212
|
+
spec[:tailable] = true
|
213
|
+
when :tailable_await
|
214
|
+
spec[:tailable] = true
|
215
|
+
spec[:await_data] = true
|
216
|
+
end
|
217
|
+
end
|
203
218
|
end
|
204
219
|
end
|
205
220
|
end
|
@@ -127,6 +127,7 @@ module Mongo
|
|
127
127
|
# return in each response from MongoDB.
|
128
128
|
# @option options [ Hash ] :collation The collation to use.
|
129
129
|
# @option options [ String ] :comment Associate a comment with the query.
|
130
|
+
# @option options [ :tailable, :tailable_await ] :cursor_type The type of cursor to use.
|
130
131
|
# @option options [ Hash ] :explain Execute an explain with the provided
|
131
132
|
# explain options (known options are :verbose and :verbosity) rather
|
132
133
|
# than a find.
|
data/lib/mongo/collection.rb
CHANGED
@@ -725,13 +725,35 @@ module Mongo
|
|
725
725
|
#
|
726
726
|
# @option options [ Session ] :session The session to use.
|
727
727
|
#
|
728
|
-
# @return [ View
|
728
|
+
# @return [ Index::View ] The index view.
|
729
729
|
#
|
730
730
|
# @since 2.0.0
|
731
731
|
def indexes(options = {})
|
732
732
|
Index::View.new(self, options)
|
733
733
|
end
|
734
734
|
|
735
|
+
# Get a view of all search indexes for this collection. Can be iterated or
|
736
|
+
# operated on directly. If id or name are given, the iterator will return
|
737
|
+
# only the indicated index. For all other operations, id and name are
|
738
|
+
# ignored.
|
739
|
+
#
|
740
|
+
# @note Only one of id or name may be given; it is an error to specify both,
|
741
|
+
# although both may be omitted safely.
|
742
|
+
#
|
743
|
+
# @param [ Hash ] options The options to use to configure the view.
|
744
|
+
#
|
745
|
+
# @option options [ String ] :id The id of the specific index to query (optional)
|
746
|
+
# @option options [ String ] :name The name of the specific index to query (optional)
|
747
|
+
# @option options [ Hash ] :aggregate The options hash to pass to the
|
748
|
+
# aggregate command (optional)
|
749
|
+
#
|
750
|
+
# @return [ SearchIndex::View ] The search index view.
|
751
|
+
#
|
752
|
+
# @since 2.0.0
|
753
|
+
def search_indexes(options = {})
|
754
|
+
SearchIndex::View.new(self, options)
|
755
|
+
end
|
756
|
+
|
735
757
|
# Get a pretty printed string inspection for the collection.
|
736
758
|
#
|
737
759
|
# @example Inspect the collection.
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mongo
|
4
|
+
module Operation
|
5
|
+
class CreateSearchIndexes
|
6
|
+
# A MongoDB createSearchIndexes operation sent as an op message.
|
7
|
+
#
|
8
|
+
# @api private
|
9
|
+
class OpMsg < OpMsgBase
|
10
|
+
include ExecutableTransactionLabel
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
# Returns the command to send to the database, describing the
|
15
|
+
# desired createSearchIndexes operation.
|
16
|
+
#
|
17
|
+
# @param [ Mongo::Server ] _server the server that will receive the
|
18
|
+
# command
|
19
|
+
#
|
20
|
+
# @return [ Hash ] the selector
|
21
|
+
def selector(_server)
|
22
|
+
{
|
23
|
+
createSearchIndexes: coll_name,
|
24
|
+
:$db => db_name,
|
25
|
+
indexes: indexes,
|
26
|
+
}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'mongo/operation/create_search_indexes/op_msg'
|
4
|
+
|
5
|
+
module Mongo
|
6
|
+
module Operation
|
7
|
+
# A MongoDB createSearchIndexes command operation.
|
8
|
+
#
|
9
|
+
# @api private
|
10
|
+
class CreateSearchIndexes
|
11
|
+
include Specifiable
|
12
|
+
include OpMsgExecutable
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mongo
|
4
|
+
module Operation
|
5
|
+
class DropSearchIndex
|
6
|
+
# A MongoDB createSearchIndexes operation sent as an op message.
|
7
|
+
#
|
8
|
+
# @api private
|
9
|
+
class OpMsg < OpMsgBase
|
10
|
+
include ExecutableTransactionLabel
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
# Returns the command to send to the database, describing the
|
15
|
+
# desired dropSearchIndex operation.
|
16
|
+
#
|
17
|
+
# @param [ Mongo::Server ] _server the server that will receive the
|
18
|
+
# command
|
19
|
+
#
|
20
|
+
# @return [ Hash ] the selector
|
21
|
+
def selector(_server)
|
22
|
+
{
|
23
|
+
dropSearchIndex: coll_name,
|
24
|
+
:$db => db_name,
|
25
|
+
}.tap do |sel|
|
26
|
+
sel[:id] = index_id if index_id
|
27
|
+
sel[:name] = index_name if index_name
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'mongo/operation/drop_search_index/op_msg'
|
4
|
+
|
5
|
+
module Mongo
|
6
|
+
module Operation
|
7
|
+
# A MongoDB dropSearchIndex command operation.
|
8
|
+
#
|
9
|
+
# @api private
|
10
|
+
class DropSearchIndex
|
11
|
+
include Specifiable
|
12
|
+
include OpMsgExecutable
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -260,6 +260,13 @@ module Mongo
|
|
260
260
|
spec[INDEX]
|
261
261
|
end
|
262
262
|
|
263
|
+
# Get the index id from the spec.
|
264
|
+
#
|
265
|
+
# @return [ String ] The index id.
|
266
|
+
def index_id
|
267
|
+
spec[:index_id]
|
268
|
+
end
|
269
|
+
|
263
270
|
# Get the index name from the spec.
|
264
271
|
#
|
265
272
|
# @example Get the index name.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mongo
|
4
|
+
module Operation
|
5
|
+
class UpdateSearchIndex
|
6
|
+
# A MongoDB updateSearchIndex operation sent as an op message.
|
7
|
+
#
|
8
|
+
# @api private
|
9
|
+
class OpMsg < OpMsgBase
|
10
|
+
include ExecutableTransactionLabel
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
# Returns the command to send to the database, describing the
|
15
|
+
# desired updateSearchIndex operation.
|
16
|
+
#
|
17
|
+
# @param [ Mongo::Server ] _server the server that will receive the
|
18
|
+
# command
|
19
|
+
#
|
20
|
+
# @return [ Hash ] the selector
|
21
|
+
def selector(_server)
|
22
|
+
{
|
23
|
+
updateSearchIndex: coll_name,
|
24
|
+
:$db => db_name,
|
25
|
+
definition: index,
|
26
|
+
}.tap do |sel|
|
27
|
+
sel[:id] = index_id if index_id
|
28
|
+
sel[:name] = index_name if index_name
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'mongo/operation/update_search_index/op_msg'
|
4
|
+
|
5
|
+
module Mongo
|
6
|
+
module Operation
|
7
|
+
# A MongoDB updateSearchIndex command operation.
|
8
|
+
#
|
9
|
+
# @api private
|
10
|
+
class UpdateSearchIndex
|
11
|
+
include Specifiable
|
12
|
+
include OpMsgExecutable
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/mongo/operation.rb
CHANGED
@@ -51,6 +51,9 @@ require 'mongo/operation/update_user'
|
|
51
51
|
require 'mongo/operation/remove_user'
|
52
52
|
require 'mongo/operation/create_index'
|
53
53
|
require 'mongo/operation/drop_index'
|
54
|
+
require 'mongo/operation/create_search_indexes'
|
55
|
+
require 'mongo/operation/drop_search_index'
|
56
|
+
require 'mongo/operation/update_search_index'
|
54
57
|
|
55
58
|
module Mongo
|
56
59
|
|
@@ -0,0 +1,232 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mongo
|
4
|
+
module SearchIndex
|
5
|
+
# A class representing a view of search indexes.
|
6
|
+
class View
|
7
|
+
include Enumerable
|
8
|
+
include Retryable
|
9
|
+
include Collection::Helpers
|
10
|
+
|
11
|
+
# @return [ Mongo::Collection ] the collection this view belongs to
|
12
|
+
attr_reader :collection
|
13
|
+
|
14
|
+
# @return [ nil | String ] the index id to query
|
15
|
+
attr_reader :requested_index_id
|
16
|
+
|
17
|
+
# @return [ nil | String ] the index name to query
|
18
|
+
attr_reader :requested_index_name
|
19
|
+
|
20
|
+
# @return [ Hash ] the options hash to use for the aggregate command
|
21
|
+
# when querying the available indexes.
|
22
|
+
attr_reader :aggregate_options
|
23
|
+
|
24
|
+
# Create the new search index view.
|
25
|
+
#
|
26
|
+
# @param [ Collection ] collection The collection.
|
27
|
+
# @param [ Hash ] options The options that configure the behavior of the view.
|
28
|
+
#
|
29
|
+
# @option options [ String ] :id The specific index id to query (optional)
|
30
|
+
# @option options [ String ] :name The name of the specific index to query (optional)
|
31
|
+
# @option options [ Hash ] :aggregate The options hash to send to the
|
32
|
+
# aggregate command when querying the available indexes.
|
33
|
+
def initialize(collection, options = {})
|
34
|
+
@collection = collection
|
35
|
+
@requested_index_id = options[:id]
|
36
|
+
@requested_index_name = options[:name]
|
37
|
+
@aggregate_options = options[:aggregate] || {}
|
38
|
+
|
39
|
+
return if @aggregate_options.is_a?(Hash)
|
40
|
+
|
41
|
+
raise ArgumentError, "The :aggregate option must be a Hash (got a #{@aggregate_options.class})"
|
42
|
+
end
|
43
|
+
|
44
|
+
# Create a single search index with the given definition. If the name is
|
45
|
+
# provided, the new index will be given that name.
|
46
|
+
#
|
47
|
+
# @param [ Hash ] definition The definition of the search index.
|
48
|
+
# @param [ nil | String ] name The name to give the new search index.
|
49
|
+
#
|
50
|
+
# @return [ String ] the name of the new search index.
|
51
|
+
def create_one(definition, name: nil)
|
52
|
+
create_many([ { name: name, definition: definition } ]).first
|
53
|
+
end
|
54
|
+
|
55
|
+
# Create multiple search indexes with a single command.
|
56
|
+
#
|
57
|
+
# @param [ Array<Hash> ] indexes The description of the indexes to
|
58
|
+
# create. Each element of the list must be a hash with a definition
|
59
|
+
# key, and an optional name key.
|
60
|
+
#
|
61
|
+
# @return [ Array<String> ] the names of the new search indexes.
|
62
|
+
def create_many(indexes)
|
63
|
+
spec = spec_with(indexes: indexes.map { |v| validate_search_index!(v) })
|
64
|
+
result = Operation::CreateSearchIndexes.new(spec).execute(next_primary, context: execution_context)
|
65
|
+
result.first['indexesCreated'].map { |idx| idx['name'] }
|
66
|
+
end
|
67
|
+
|
68
|
+
# Drop the search index with the given id, or name. One or the other must
|
69
|
+
# be specified, but not both.
|
70
|
+
#
|
71
|
+
# @param [ String ] id the id of the index to drop
|
72
|
+
# @param [ String ] name the name of the index to drop
|
73
|
+
#
|
74
|
+
# @return [ Mongo::Operation::Result | false ] the result of the
|
75
|
+
# operation, or false if the given index does not exist.
|
76
|
+
def drop_one(id: nil, name: nil)
|
77
|
+
validate_id_or_name!(id, name)
|
78
|
+
|
79
|
+
spec = spec_with(index_id: id, index_name: name)
|
80
|
+
op = Operation::DropSearchIndex.new(spec)
|
81
|
+
|
82
|
+
# per the spec:
|
83
|
+
# Drivers MUST suppress NamespaceNotFound errors for the
|
84
|
+
# ``dropSearchIndex`` helper. Drop operations should be idempotent.
|
85
|
+
do_drop(op, nil, execution_context)
|
86
|
+
end
|
87
|
+
|
88
|
+
# Iterate over the search indexes.
|
89
|
+
#
|
90
|
+
# @param [ Proc ] block if given, each search index will be yieleded to
|
91
|
+
# the block.
|
92
|
+
#
|
93
|
+
# @return [ self | Enumerator ] if a block is given, self is returned.
|
94
|
+
# Otherwise, an enumerator will be returned.
|
95
|
+
def each(&block)
|
96
|
+
@result ||= begin
|
97
|
+
spec = {}.tap do |s|
|
98
|
+
s[:id] = requested_index_id if requested_index_id
|
99
|
+
s[:name] = requested_index_name if requested_index_name
|
100
|
+
end
|
101
|
+
|
102
|
+
collection.aggregate(
|
103
|
+
[ { '$listSearchIndexes' => spec } ],
|
104
|
+
aggregate_options
|
105
|
+
)
|
106
|
+
end
|
107
|
+
|
108
|
+
return @result.to_enum unless block
|
109
|
+
|
110
|
+
@result.each(&block)
|
111
|
+
self
|
112
|
+
end
|
113
|
+
|
114
|
+
# Update the search index with the given id or name. One or the other
|
115
|
+
# must be provided, but not both.
|
116
|
+
#
|
117
|
+
# @param [ Hash ] definition the definition to replace the given search
|
118
|
+
# index with.
|
119
|
+
# @param [ nil | String ] id the id of the search index to update
|
120
|
+
# @param [ nil | String ] name the name of the search index to update
|
121
|
+
#
|
122
|
+
# @return [ Mongo::Operation::Result ] the result of the operation
|
123
|
+
def update_one(definition, id: nil, name: nil)
|
124
|
+
validate_id_or_name!(id, name)
|
125
|
+
|
126
|
+
spec = spec_with(index_id: id, index_name: name, index: definition)
|
127
|
+
Operation::UpdateSearchIndex.new(spec).execute(next_primary, context: execution_context)
|
128
|
+
end
|
129
|
+
|
130
|
+
# The following methods are to make the view act more like an array,
|
131
|
+
# without having to explicitly make it an array...
|
132
|
+
|
133
|
+
# Queries whether the search index enumerable is empty.
|
134
|
+
#
|
135
|
+
# @return [ true | false ] whether the enumerable is empty or not.
|
136
|
+
def empty?
|
137
|
+
count.zero?
|
138
|
+
end
|
139
|
+
|
140
|
+
private
|
141
|
+
|
142
|
+
# A helper method for building the specification document with certain
|
143
|
+
# values pre-populated.
|
144
|
+
#
|
145
|
+
# @param [ Hash ] extras the values to put into the specification
|
146
|
+
#
|
147
|
+
# @return [ Hash ] the specification document
|
148
|
+
def spec_with(extras)
|
149
|
+
{
|
150
|
+
coll_name: collection.name,
|
151
|
+
db_name: collection.database.name,
|
152
|
+
}.merge(extras)
|
153
|
+
end
|
154
|
+
|
155
|
+
# A helper method for retrieving the primary server from the cluster.
|
156
|
+
#
|
157
|
+
# @return [ Mongo::Server ] the server to use
|
158
|
+
def next_primary(ping = nil, session = nil)
|
159
|
+
collection.cluster.next_primary(ping, session)
|
160
|
+
end
|
161
|
+
|
162
|
+
# A helper method for constructing a new operation context for executing
|
163
|
+
# an operation.
|
164
|
+
#
|
165
|
+
# @return [ Mongo::Operation::Context ] the operation context
|
166
|
+
def execution_context
|
167
|
+
Operation::Context.new(client: collection.client)
|
168
|
+
end
|
169
|
+
|
170
|
+
# Validates the given id and name, ensuring that exactly one of them
|
171
|
+
# is non-nil.
|
172
|
+
#
|
173
|
+
# @param [ nil | String ] id the id to validate
|
174
|
+
# @param [ nil | String ] name the name to validate
|
175
|
+
#
|
176
|
+
# @raise [ ArgumentError ] if neither or both arguments are nil
|
177
|
+
def validate_id_or_name!(id, name)
|
178
|
+
return unless (id.nil? && name.nil?) || (!id.nil? && !name.nil?)
|
179
|
+
|
180
|
+
raise ArgumentError, 'exactly one of id or name must be specified'
|
181
|
+
end
|
182
|
+
|
183
|
+
# Validates the given search index document, ensuring that it has no
|
184
|
+
# extra keys, and that the name and definition are valid.
|
185
|
+
#
|
186
|
+
# @param [ Hash ] doc the document to validate
|
187
|
+
#
|
188
|
+
# @raise [ ArgumentError ] if the document is invalid.
|
189
|
+
def validate_search_index!(doc)
|
190
|
+
validate_search_index_keys!(doc.keys)
|
191
|
+
validate_search_index_name!(doc[:name] || doc['name'])
|
192
|
+
validate_search_index_definition!(doc[:definition] || doc['definition'])
|
193
|
+
doc
|
194
|
+
end
|
195
|
+
|
196
|
+
# Validates the keys of a search index document, ensuring that
|
197
|
+
# they are all valid.
|
198
|
+
#
|
199
|
+
# @param [ Array<String | Hash> ] keys the keys of a search index document
|
200
|
+
#
|
201
|
+
# @raise [ ArgumentError ] if the list contains any invalid keys
|
202
|
+
def validate_search_index_keys!(keys)
|
203
|
+
extras = keys - [ 'name', 'definition', :name, :definition ]
|
204
|
+
|
205
|
+
raise ArgumentError, "invalid keys in search index creation: #{extras.inspect}" if extras.any?
|
206
|
+
end
|
207
|
+
|
208
|
+
# Validates the name of a search index, ensuring that it is either a
|
209
|
+
# String or nil.
|
210
|
+
#
|
211
|
+
# @param [ nil | String ] name the name of a search index
|
212
|
+
#
|
213
|
+
# @raise [ ArgumentError ] if the name is not valid
|
214
|
+
def validate_search_index_name!(name)
|
215
|
+
return if name.nil? || name.is_a?(String)
|
216
|
+
|
217
|
+
raise ArgumentError, "search index name must be nil or a string (got #{name.inspect})"
|
218
|
+
end
|
219
|
+
|
220
|
+
# Validates the definition of a search index.
|
221
|
+
#
|
222
|
+
# @param [ Hash ] definition the definition of a search index
|
223
|
+
#
|
224
|
+
# @raise [ ArgumentError ] if the definition is not valid
|
225
|
+
def validate_search_index_definition!(definition)
|
226
|
+
return if definition.is_a?(Hash)
|
227
|
+
|
228
|
+
raise ArgumentError, "search index definition must be a Hash (got #{definition.inspect})"
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
data/lib/mongo/version.rb
CHANGED
data/lib/mongo.rb
CHANGED
@@ -7,11 +7,7 @@ describe 'Atlas connectivity' do
|
|
7
7
|
let(:uri) { ENV['ATLAS_URI'] }
|
8
8
|
let(:client) { Mongo::Client.new(uri) }
|
9
9
|
|
10
|
-
|
11
|
-
if uri.nil?
|
12
|
-
skip "ATLAS_URI not set in environment"
|
13
|
-
end
|
14
|
-
end
|
10
|
+
require_atlas
|
15
11
|
|
16
12
|
describe 'connection to Atlas' do
|
17
13
|
it 'runs ismaster successfully' do
|