module Mongo::Operation::ReadPreference
Adds behaviour for updating the options and the selector for operations that need to take read preference into account.
@since 2.0.0
Constants
- SLAVE_OK
The constant for slave ok flags.
@since 2.0.6
Private Instance Methods
message(server)
click to toggle source
# File lib/mongo/operation/read_preference.rb, line 54 def message(server) sel = update_selector_for_read_pref(selector, server) opts = update_options_for_slave_ok(options, server) Protocol::Query.new(db_name, query_coll, sel, opts) end
slave_ok?(server)
click to toggle source
# File lib/mongo/operation/read_preference.rb, line 40 def slave_ok?(server) (server.cluster.single? && !server.mongos?) || read.slave_ok? end
update_options_for_slave_ok(opts, server)
click to toggle source
# File lib/mongo/operation/read_preference.rb, line 44 def update_options_for_slave_ok(opts, server) if slave_ok?(server) opts.dup.tap do |o| (o[:flags] ||= []) << SLAVE_OK end else opts end end
update_selector_for_read_pref(sel, server)
click to toggle source
# File lib/mongo/operation/read_preference.rb, line 31 def update_selector_for_read_pref(sel, server) if server.mongos? && read_pref = read.to_mongos sel = sel[:$query] ? sel : { :$query => sel } sel.merge(:$readPreference => read_pref) else sel end end