class Moped::Session::Context
@api private
Attributes
session[R]
Public Class Methods
new(session)
click to toggle source
# File lib/moped/session/context.rb, line 9 def initialize(session) @session = session end
Public Instance Methods
cluster()
click to toggle source
# File lib/moped/session/context.rb, line 25 def cluster session.cluster end
command(database, command)
click to toggle source
# File lib/moped/session/context.rb, line 48 def command(database, command) options = consistency == :eventual ? { :flags => [:slave_ok] } : {} with_node do |node| node.command(database, command, options) end end
consistency()
click to toggle source
# File lib/moped/session/context.rb, line 21 def consistency session.consistency end
get_more(*args)
click to toggle source
# File lib/moped/session/context.rb, line 94 def get_more(*args) raise NotImplementedError, "#get_more cannot be called on Context; it must be called directly on a node" end
insert(database, collection, documents, options = {})
click to toggle source
# File lib/moped/session/context.rb, line 55 def insert(database, collection, documents, options = {}) with_node do |node| if safe? node.pipeline do node.insert(database, collection, documents, options) node.command(database, { getlasterror: 1 }.merge(safety)) end else node.insert(database, collection, documents, options) end end end
kill_cursors(*args)
click to toggle source
# File lib/moped/session/context.rb, line 98 def kill_cursors(*args) raise NotImplementedError, "#kill_cursors cannot be called on Context; it must be called directly on a node" end
login(database, username, password)
click to toggle source
# File lib/moped/session/context.rb, line 29 def login(database, username, password) cluster.auth[database.to_s] = [username, password] end
logout(database)
click to toggle source
# File lib/moped/session/context.rb, line 33 def logout(database) cluster.auth.delete database.to_s end
query(database, collection, selector, options = {})
click to toggle source
# File lib/moped/session/context.rb, line 37 def query(database, collection, selector, options = {}) if consistency == :eventual options[:flags] ||= [] options[:flags] |= [:slave_ok] end with_node do |node| node.query(database, collection, selector, options) end end
remove(database, collection, selector, options = {})
click to toggle source
# File lib/moped/session/context.rb, line 81 def remove(database, collection, selector, options = {}) with_node do |node| if safe? node.pipeline do node.remove(database, collection, selector, options) node.command(database, { getlasterror: 1 }.merge(safety)) end else node.remove(database, collection, selector, options) end end end
safe?()
click to toggle source
# File lib/moped/session/context.rb, line 17 def safe? session.safe? end
safety()
click to toggle source
# File lib/moped/session/context.rb, line 13 def safety session.safety end
update(database, collection, selector, change, options = {})
click to toggle source
# File lib/moped/session/context.rb, line 68 def update(database, collection, selector, change, options = {}) with_node do |node| if safe? node.pipeline do node.update(database, collection, selector, change, options) node.command(database, { getlasterror: 1 }.merge(safety)) end else node.update(database, collection, selector, change, options) end end end
with_node() { |node| ... }
click to toggle source
# File lib/moped/session/context.rb, line 102 def with_node if consistency == :eventual cluster.with_secondary do |node| yield node end else cluster.with_primary do |node| yield node end end end