class ROM::Session

Session namespace

Session with IdentityMap and state-tracking functionality

@example

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

  session[:users].save(user)

  session.flush
end

@api public

Constants

VERSION

Public Class Methods

start(environment) { |new(build)| ... } click to toggle source

Start a new session

@example

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

@param [ROM::Environment] rom’s environment

@yieldparam [Session::Environment]

@api public

# File lib/rom/session.rb, line 36
def self.start(environment)
  yield(new(Environment.build(environment)))
end

Public Instance Methods

[](relation_name) click to toggle source

Return a session relation identified by name

@param [Symbol] relation name

@return [Session::Relation]

@api public

# File lib/rom/session.rb, line 47
def [](relation_name)
  environment[relation_name]
end
clean?() click to toggle source

Return if there are any pending state changes

@return [Boolean]

@api public

# File lib/rom/session.rb, line 66
def clean?
  environment.clean?
end
flush() click to toggle source

Flush this session committing all the state changes

@return [Session]

@api public

# File lib/rom/session.rb, line 56
def flush
  environment.commit
  self
end