class Mongo::WriteConcern::Base
Defines common behavior for write concerns.
@since 2.7.0
Attributes
options[R]
@return [ Hash ] The write concern options.
Public Class Methods
new(options)
click to toggle source
Instantiate a new write concern given the options.
@api private
@example Instantiate a new write concern mode.
Mongo::WriteConcern::Acknowledged.new(:w => 1)
@param [ Hash ] options The options to instantiate with.
@option options :w [ Integer, String ] The number of servers or the
custom mode to acknowledge.
@option options :j [ true, false ] Whether to acknowledge a write to
the journal.
@option options :fsync [ true, false ] Should the write be synced to
disc.
@option options :wtimeout [ Integer ] The number of milliseconds to
wait for acknowledgement before raising an error.
@since 2.0.0
# File lib/mongo/write_concern/base.rb, line 45 def initialize(options) options = Options::Mapper.transform_keys_to_symbols(options) options = Options::Mapper.transform_values_to_strings(options).freeze if options[:w] if options[:w] == 0 && options[:j] raise Error::InvalidWriteConcern, "Invalid write concern options: :j cannot be true when :w is 0: #{options.inspect}" elsif options[:w] == 0 && options[:fsync] raise Error::InvalidWriteConcern, "Invalid write concern options: :fsync cannot be true when :w is 0: #{options.inspect}" elsif options[:w].is_a?(Integer) && options[:w] < 0 raise Error::InvalidWriteConcern, "Invalid write concern options: :w cannot be negative (#{options[:w]}): #{options.inspect}" end end if options[:journal] raise Error::InvalidWriteConcern, "Invalid write concern options: use :j for journal: #{options.inspect}" end @options = options end