Module: Mongo::Lint Private
| Relationships & Source Files | |
| Defined in: | lib/mongo/lint.rb |
Class Method Summary
-
.assert_type(obj, cls)
Internal use only
mod_func
Raises LintError if
objis not of typecls. - .enabled? ⇒ Boolean Internal use only mod_func
- .validate_camel_case_read_preference(read_pref) Internal use only mod_func
- .validate_camel_case_read_preference_mode(mode) Internal use only mod_func
-
.validate_read_concern_option(read_concern)
Internal use only
mod_func
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.md#read-concern).
- .validate_underscore_read_preference(read_pref) Internal use only mod_func
- .validate_underscore_read_preference_mode(mode) Internal use only mod_func
Class Method Details
.assert_type(obj, cls) (mod_func)
Raises LintError if obj is not of type cls.
.enabled? ⇒ Boolean (mod_func)
# File 'lib/mongo/lint.rb', line 94
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) (mod_func)
# File 'lib/mongo/lint.rb', line 34
def validate_camel_case_read_preference(read_pref) return unless enabled? return if read_pref.nil? raise Error::LintError, "Read preference is not a hash: #{read_pref}" unless read_pref.is_a?(Hash) validate_camel_case_read_preference_mode(read_pref[:mode] || read_pref['mode']) end
.validate_camel_case_read_preference_mode(mode) (mod_func)
.validate_read_concern_option(read_concern) (mod_func)
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.md#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.
# File 'lib/mongo/lint.rb', line 71
def validate_read_concern_option(read_concern) return unless enabled? return if read_concern.nil? raise Error::LintError, "Read concern is not a hash: #{read_concern}" unless read_concern.is_a?(Hash) return if read_concern.empty? keys = read_concern.keys allowed_keys = if read_concern.is_a?(BSON::Document) # Permits indifferent access [ 'level' ] else # Does not permit indifferent access [ :level ] end raise Error::LintError, "Read concern has invalid keys: #{keys.inspect}" if keys != allowed_keys level = read_concern[:level] return if %i[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) (mod_func)
# File 'lib/mongo/lint.rb', line 15
def validate_underscore_read_preference(read_pref) return unless enabled? return if read_pref.nil? raise Error::LintError, "Read preference is not a hash: #{read_pref}" unless read_pref.is_a?(Hash) validate_underscore_read_preference_mode(read_pref[:mode] || read_pref['mode']) end