Class: Foobara::TransactionGroup

Inherits:
Object
  • Object
show all
Includes:
NestedTransactionable
Defined in:
foobara-0.3.0/projects/nested_transactionable/lib/foobara/nested_transactionable.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from NestedTransactionable

#auto_detect_current_transactions, #commit_transaction, #commit_transaction_if_open, #open_transaction, #opened_transactions, relevant_entity_classes_for_type, #relevant_entity_classes_for_type, #rollback_transaction, #transactions, #use_transaction, with_needed_transactions_for_type

Constructor Details

#initialize(transaction_mode: nil, relevant_entity_classes: nil, relevant_entity_bases: nil) ⇒ TransactionGroup

Returns a new instance of TransactionGroup.



158
159
160
161
162
# File 'projects/nested_transactionable/lib/foobara/nested_transactionable.rb', line 158

def initialize(transaction_mode: nil, relevant_entity_classes: nil, relevant_entity_bases: nil)
  self.relevant_entity_classes = relevant_entity_classes
  self.relevant_entity_bases = relevant_entity_bases
  self.transaction_mode = transaction_mode
end

Instance Attribute Details

#relevant_entity_basesObject

Returns the value of attribute relevant_entity_bases.



156
157
158
# File 'projects/nested_transactionable/lib/foobara/nested_transactionable.rb', line 156

def relevant_entity_bases
  @relevant_entity_bases
end

#relevant_entity_classesObject

Returns the value of attribute relevant_entity_classes.



156
157
158
# File 'projects/nested_transactionable/lib/foobara/nested_transactionable.rb', line 156

def relevant_entity_classes
  @relevant_entity_classes
end

#transaction_modeObject

Returns the value of attribute transaction_mode.



156
157
158
# File 'projects/nested_transactionable/lib/foobara/nested_transactionable.rb', line 156

def transaction_mode
  @transaction_mode
end

Class Method Details

.run(mode: nil, entity_classes: nil, bases: nil) ⇒ Object



147
148
149
150
151
152
153
# File 'projects/nested_transactionable/lib/foobara/nested_transactionable.rb', line 147

def run(mode: nil, entity_classes: nil, bases: nil, &)
  new(
    transaction_mode: mode,
    relevant_entity_classes: entity_classes,
    relevant_entity_bases: bases
  ).run(&)
end

Instance Method Details

#runObject



164
165
166
167
168
169
170
171
172
# File 'projects/nested_transactionable/lib/foobara/nested_transactionable.rb', line 164

def run(&)
  open_transaction
  result = Persistence::EntityBase.using_transactions(transactions, &)
  commit_transaction
  result
rescue
  rollback_transaction
  raise
end