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
- .included(base) ⇒ Object
-
.install(base, **_options) ⇒ Object
Support the ‘plugin` DSL: `plugin Easyop::Plugins::Transactional`.
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, **) base.include(self) end |