Module: Mongo::Lint Private
- Defined in:
- lib/mongo/lint.rb
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Class Method Summary collapse
-
.assert_type(obj, cls) ⇒ Object
private
Raises LintError if
obj
is not of typecls
. - .enabled? ⇒ Boolean private
- .validate_camel_case_read_preference(read_pref) ⇒ Object private
- .validate_camel_case_read_preference_mode(mode) ⇒ Object private
-
.validate_read_concern_option(read_concern) ⇒ Object
private
Validates the provided hash as a read concern object, per the read/write concern specification (github.com/mongodb/specifications/blob/master/source/read-write-concern/read-write-concern.rst#read-concern).
- .validate_underscore_read_preference(read_pref) ⇒ Object private
- .validate_underscore_read_preference_mode(mode) ⇒ Object private
Class Method Details
.assert_type(obj, cls) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Raises LintError if obj
is not of type cls
.
10 11 12 13 14 15 |
# File 'lib/mongo/lint.rb', line 10 def assert_type(obj, cls) return unless enabled? unless obj.is_a?(cls) raise Error::LintError, "Expected #{obj} to be a #{cls}" end end |
.enabled? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
100 101 102 |
# File 'lib/mongo/lint.rb', line 100 def enabled? ENV['MONGO_RUBY_DRIVER_LINT'] && %w(1 yes true on).include?(ENV['MONGO_RUBY_DRIVER_LINT'].downcase) end |
.validate_camel_case_read_preference(read_pref) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
38 39 40 41 42 43 44 45 |
# File 'lib/mongo/lint.rb', line 38 def validate_camel_case_read_preference(read_pref) return unless enabled? return if read_pref.nil? unless read_pref.is_a?(Hash) raise Error::LintError, "Read preference is not a hash: #{read_pref}" end validate_camel_case_read_preference_mode(read_pref[:mode] || read_pref['mode']) end |
.validate_camel_case_read_preference_mode(mode) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
48 49 50 51 52 53 54 55 |
# File 'lib/mongo/lint.rb', line 48 def validate_camel_case_read_preference_mode(mode) return unless enabled? if mode unless %w(primary primaryPreferred secondary secondaryPreferred nearest).include?(mode.to_s) raise Error::LintError, "Invalid read preference mode: #{mode}" end end end |
.validate_read_concern_option(read_concern) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Validates the provided hash as a read concern object, per the read/write concern specification (github.com/mongodb/specifications/blob/master/source/read-write-concern/read-write-concern.rst#read-concern).
This method also accepts nil as input for convenience.
The read concern document as sent to the server may include additional fields, for example afterClusterTime. These fields are generated internally by the driver and cannot be specified by the user (and would potentially lead to incorrect behavior if they were specified by the user), hence this method prohibits them.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/mongo/lint.rb', line 76 def validate_read_concern_option(read_concern) return unless enabled? return if read_concern.nil? unless read_concern.is_a?(Hash) raise Error::LintError, "Read concern is not a hash: #{read_concern}" end return if read_concern.empty? keys = read_concern.keys if read_concern.is_a?(BSON::Document) # Permits indifferent access allowed_keys = ['level'] else # Does not permit indifferent access allowed_keys = [:level] end if keys != allowed_keys raise Error::LintError, "Read concern has invalid keys: #{keys.inspect}" end level = read_concern[:level] return if [:local, :available, :majority, :linearizable, :snapshot].include?(level) raise Error::LintError, "Read concern level is invalid: value must be a symbol: #{level.inspect}" end |
.validate_underscore_read_preference(read_pref) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
18 19 20 21 22 23 24 25 |
# File 'lib/mongo/lint.rb', line 18 def validate_underscore_read_preference(read_pref) return unless enabled? return if read_pref.nil? unless read_pref.is_a?(Hash) raise Error::LintError, "Read preference is not a hash: #{read_pref}" end validate_underscore_read_preference_mode(read_pref[:mode] || read_pref['mode']) end |
.validate_underscore_read_preference_mode(mode) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
28 29 30 31 32 33 34 35 |
# File 'lib/mongo/lint.rb', line 28 def validate_underscore_read_preference_mode(mode) return unless enabled? if mode unless %w(primary primary_preferred secondary secondary_preferred nearest).include?(mode.to_s) raise Error::LintError, "Invalid read preference mode: #{mode}" end end end |