Class: ROM::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/rom-session.rb,
lib/rom/session.rb,
lib/rom/session/state.rb,
lib/rom/session/mapper.rb,
lib/rom/session/tracker.rb,
lib/rom/session/version.rb,
lib/rom/session/relation.rb,
lib/rom/session/environment.rb,
lib/rom/session/identity_map.rb,
lib/rom/session/state/created.rb,
lib/rom/session/state/deleted.rb,
lib/rom/session/state/updated.rb,
lib/rom/session/state/persisted.rb,
lib/rom/session/state/transient.rb

Overview

Session with IdentityMap and state-tracking functionality

Examples:


env.session do |session|
  user = session[:users].new(id: 1, name: 'Jane')

  session[:users].save(user)

  session.flush
end

Defined Under Namespace

Classes: Environment, IdentityMap, Mapper, ObjectNotTrackedError, Relation, State, Tracker

Constant Summary collapse

VERSION =
'0.1.1'.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.start(environment) {|| ... } ⇒ Object

Start a new session

Examples:


ROM::Session.start(env) do |session|
  user = session[:users].new(name: 'Jane')
  session[:users].save(user)
  session[:users].flush
end

Parameters:

Yield Parameters:



36
37
38
# File 'lib/rom/session.rb', line 36

def self.start(environment)
  yield(new(Environment.build(environment)))
end

Instance Method Details

#[](relation_name) ⇒ Session::Relation

Return a session relation identified by name

Parameters:

  • relation (Symbol)

    name

Returns:



47
48
49
# File 'lib/rom/session.rb', line 47

def [](relation_name)
  environment[relation_name]
end

#clean?Boolean

Return if there are any pending state changes

Returns:

  • (Boolean)


66
67
68
# File 'lib/rom/session.rb', line 66

def clean?
  environment.clean?
end

#flushSession

Flush this session committing all the state changes

Returns:



56
57
58
59
# File 'lib/rom/session.rb', line 56

def flush
  environment.commit
  self
end