Sha256: b24cecbe0f88954cd297b18408304bac8936650730bc4e960ea07aa73e1eca19

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

# encoding: utf-8

module ROM

  # Extends ROM's environment with IdentityMap and state-tracking functionality
  #
  # @api public
  class Session
    include Concord.new(:environment)

    # 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
    def self.start(environment)
      yield(new(Environment.build(environment)))
    end

    # Return a session relation identified by name
    #
    # @param [Symbol] relation name
    #
    # @return [Session::Relation]
    #
    # @api public
    def [](relation_name)
      environment[relation_name]
    end

    # Flush this session committing all the state changes
    #
    # @return [Session]
    #
    # @api public
    def flush
      environment.commit
      self
    end

    # Return if there are any pending state changes
    #
    # @return [Boolean]
    #
    # @api public
    def clean?
      environment.clean?
    end

  end # Session

end # ROM

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rom-session-0.1.0 lib/rom/session.rb