Module: Easyop::Plugins::Transactional

Defined in:
lib/easyop/plugins/transactional.rb

Overview

Wraps the entire operation (including before/after hooks) in a database transaction. On ctx.fail! or any unhandled exception the transaction rolls back.

Supports ActiveRecord and Sequel out of the box.

Usage — include style (classic):

class TransferFunds
  include Easyop::Operation
  include Easyop::Plugins::Transactional
end

Usage — plugin DSL (recommended, works with ApplicationOperation):

class ApplicationOperation
  include Easyop::Operation
  plugin Easyop::Plugins::Transactional
end

Or opt in per operation:

class TransferFunds < ApplicationOperation
  plugin Easyop::Plugins::Transactional
end

To opt out when the parent has it:

class ReadOnlyOp < ApplicationOperation
  transactional false
end

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



35
36
37
38
# File 'lib/easyop/plugins/transactional.rb', line 35

def self.included(base)
  base.extend(ClassMethods)
  base.around(:_transactional_wrap)
end

.install(base, **_options) ⇒ Object

Support the ‘plugin` DSL: `plugin Easyop::Plugins::Transactional`



31
32
33
# File 'lib/easyop/plugins/transactional.rb', line 31

def self.install(base, **_options)
  base.include(self)
end