Class: Bones::RPC::Session

Inherits:
Object
  • Object
show all
Includes:
Optionable
Defined in:
lib/bones/rpc/session.rb

Overview

A session in bones_rpc is root for all interactions with a Bones::RPC server or replica set.

It can talk to a single default database, or dynamically speak to multiple databases.

Examples:

Single database (console-style)

session = Bones::RPC::Session.new(["127.0.0.1:27017"])
session.use(:bones_rpc)
session[:users].find.one

Multiple databases

session = Bones::RPC::Session.new(["127.0.0.1:27017"])
session.with(database: :admin) do |admin|
  admin.command(ismaster: 1)
end

Authentication

session = Bones::RPC::Session.new %w[127.0.0.1:27017],
session.with(database: "admin").("admin", "s3cr3t")

Since:

  • 0.0.1

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(seeds, options = {}, &callback) ⇒ Session

Initialize a new database session.

Examples:

Initialize a new session.

Session.new([ "localhost:27017" ])

See Also:

  • options validations for allowed values in the options hash.

Since:

  • 0.0.1



145
146
147
148
149
150
# File 'lib/bones/rpc/session.rb', line 145

def initialize(seeds, options = {}, &callback)
  validate_strict(options)
  @options = options
  @callback = callback
  @cluster = Cluster.new(self, seeds)
end

Instance Attribute Details

#clusterCluster



39
40
41
# File 'lib/bones/rpc/session.rb', line 39

def cluster
  @cluster
end

#optionsObject

Since:

  • 0.0.1



39
# File 'lib/bones/rpc/session.rb', line 39

attr_reader :cluster, :options

Class Method Details

.connect(uri, &block) ⇒ Session

Create a new session from a URI.

Examples:

Initialize a new session.

Session.connect("bones-rpc://localhost:27017/my_db")

Since:

  • 0.0.1



189
190
191
192
193
# File 'lib/bones/rpc/session.rb', line 189

def connect(uri, &block)
  uri = Uri.new(uri)
  session = new(*uri.bones_rpc_arguments, &block)
  session
end

Instance Method Details

#backendObject

Since:

  • 0.0.1



41
42
43
# File 'lib/bones/rpc/session.rb', line 41

def backend
  @backend ||= Backend.get(options[:backend] || :synchronous).tap(&:setup)
end

#command(op) ⇒ Object

Run command on the current database.

Since:

  • 0.0.1



52
53
54
# File 'lib/bones/rpc/session.rb', line 52

def command(op)
  current_database.command(op)
end

#contextObject

Since:

  • 0.0.1



56
57
58
# File 'lib/bones/rpc/session.rb', line 56

def context
  @context ||= Context.new(self)
end

#disconnecttrue

Disconnects all nodes in the session’s cluster. This should only be used in cases # where you know you’re not going to use the cluster on the thread anymore and need to force the connections to close.

Since:

  • 0.0.1



67
68
69
# File 'lib/bones/rpc/session.rb', line 67

def disconnect
  cluster.disconnect
end

#handle_refresh(node) ⇒ Object

Since:

  • 0.0.1



71
72
73
# File 'lib/bones/rpc/session.rb', line 71

def handle_refresh(node)
  @callback.call(node) if @callback
end

#inspectString

Provide a string inspection for the session.

Examples:

Inspect the session.

session.inspect

Since:

  • 0.0.1



83
84
85
# File 'lib/bones/rpc/session.rb', line 83

def inspect
  "<#{self.class.name} seeds=#{cluster.seeds}>"
end

#notify(method, *params) ⇒ Object

Since:

  • 0.0.1



152
153
154
# File 'lib/bones/rpc/session.rb', line 152

def notify(method, *params)
  context.notify(method, params)
end

#read_preferenceObject

Get the read preference for the session. Will default to primary if none was provided.

Examples:

Get the session’s read preference.

session.read_preference

Since:

  • 0.0.1



165
166
167
# File 'lib/bones/rpc/session.rb', line 165

def read_preference
  @read_preference ||= ReadPreference.get(options[:read] || :nearest)
end

#request(method, *params) ⇒ Object

Since:

  • 0.0.1



169
170
171
# File 'lib/bones/rpc/session.rb', line 169

def request(method, *params)
  context.request(method, params)
end

#synchronizeObject

Since:

  • 0.0.1



173
174
175
# File 'lib/bones/rpc/session.rb', line 173

def synchronize
  context.synchronize
end