class Object

Public Instance Methods

check_if_transactions_might_be_available!(client) click to toggle source

This method raises an error if the cluster the client is connected to does not support transactions in any case. At the moment this is the case of the standalone topology.

Please note that if this method did not raise, it does not guarantee that transactions are available for the cluster.

@param [ Mongo::Client ] client Client connected to a cluster to be tested.

@raise [ Mongoid::Errors::TransactionsNotSupported ] If the cluster

definitely does not support transactions.
# File lib/mongoid/railties/console_sandbox.rb, line 16
def check_if_transactions_might_be_available!(client)
  if client.cluster.single?
    raise Mongoid::Errors::TransactionsNotSupported
  end
end
start_sandbox() click to toggle source

Prepares console sandbox mode. This method should be called when a user starts rails console with ‘–sandbox’ flag.

# File lib/mongoid/railties/console_sandbox.rb, line 36
def start_sandbox
  Mongoid.persistence_context.client.tap do |client|
    check_if_transactions_might_be_available!(client)
    start_sandbox_transaction(client)
  end
end
start_sandbox_transaction(client) click to toggle source

Starts a transaction that should include all the operations inside the sandboxed console session. This transaction should not be ever committed. When a user end the console session, the client will disconnect, and the transaction will be automatically aborted therefore.

@param [ Mongo::Client ] client Client to start the transaction.

# File lib/mongoid/railties/console_sandbox.rb, line 28
def start_sandbox_transaction(client)
  session = client.start_session
  ::Mongoid::Threaded.set_session(session, client: client)
  session.start_transaction
end