Class: CleanActions::Action
- Inherits:
-
Object
- Object
- CleanActions::Action
- Defined in:
- lib/clean_actions/action.rb
Direct Known Subclasses
Class Method Summary collapse
- .before_actions(&block) ⇒ Object
- .before_actions_blocks ⇒ Object
- .call(with_savepoint: false, **kwargs) ⇒ Object
- .isolation_level ⇒ Object
- .with_isolation_level(isolation_level) ⇒ Object
Instance Method Summary collapse
- #after_commit ⇒ Object
- #call(with_savepoint: false) ⇒ Object
- #ensure ⇒ Object
- #fail!(reason) ⇒ Object
- #perform_actions ⇒ Object
- #rollback ⇒ Object
Class Method Details
.before_actions(&block) ⇒ Object
8 9 10 |
# File 'lib/clean_actions/action.rb', line 8 def before_actions(&block) before_actions_blocks << block end |
.before_actions_blocks ⇒ Object
12 13 14 |
# File 'lib/clean_actions/action.rb', line 12 def before_actions_blocks @before_actions_blocks ||= [] end |
.call(with_savepoint: false, **kwargs) ⇒ Object
4 5 6 |
# File 'lib/clean_actions/action.rb', line 4 def call(with_savepoint: false, **kwargs) new(**kwargs).call(with_savepoint: with_savepoint) end |
.isolation_level ⇒ Object
22 23 24 |
# File 'lib/clean_actions/action.rb', line 22 def isolation_level @isolation_level ||= CleanActions.config.isolation_level end |
.with_isolation_level(isolation_level) ⇒ Object
16 17 18 19 20 |
# File 'lib/clean_actions/action.rb', line 16 def with_isolation_level(isolation_level) IsolationLevelValidator.validate(isolation_level) @isolation_level = isolation_level end |
Instance Method Details
#after_commit ⇒ Object
50 51 |
# File 'lib/clean_actions/action.rb', line 50 def after_commit end |
#call(with_savepoint: false) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/clean_actions/action.rb', line 27 def call(with_savepoint: false) if TransactionRunner.action_calls_restricted_by ErrorReporter.report("calling action #{self.class.name} is resticted inside ##{TransactionRunner.action_calls_restricted_by}") end TransactionRunner.restrict_action_calls_by(:before_transaction) { perform_before_transaction } TransactionRunner.new(self).run(with_savepoint: with_savepoint) do TransactionRunner.restrict_action_calls_by(:before_actions) do self.class.before_actions_blocks.each { |b| instance_eval(&b) } end perform_actions end end |
#ensure ⇒ Object
53 54 |
# File 'lib/clean_actions/action.rb', line 53 def ensure end |
#fail!(reason) ⇒ Object
43 44 45 |
# File 'lib/clean_actions/action.rb', line 43 def fail!(reason) raise ActionFailure.new(reason) end |
#perform_actions ⇒ Object
47 48 |
# File 'lib/clean_actions/action.rb', line 47 def perform_actions end |
#rollback ⇒ Object
56 57 |
# File 'lib/clean_actions/action.rb', line 56 def rollback end |