Transacted
A library to make writing transactional code easier.
Installation
Add this line to your application's Gemfile:
gem 'transacted'
And then execute:
$ bundle
Or install it yourself as:
$ gem install transacted
Usage
Require it in your file:
require 'transacted'
Then you can initialize Actions:
= {
up: -> {puts "Up !"},
down: -> {puts "Down !"}
}
action = Transacted::Action.new
You can then create a Transaction out of Actions :
= {
up: -> {puts "First up !"},
down: -> {puts "First down !"}
}
first_action = Transacted::Action.new
= {
up: -> {puts "Second up !"},
down: -> {puts "Second down !"}
}
second_action = Transacted::Action.new
transaction = Transacted::Transaction.new [first_action, second_action]
And execute it =
transaction_status = transaction.execute
# First up !
# Second up !
transaction_status would be either
:execution_success: if all the actions are executed successfully:rollback_success: if an action has failed and the rollback was made successfully:rollback_failure: if an action has failed during execution, and another failure was encountered during rollback. The transactionality is lost in such cases since the rollback was not successful.
Contributing
- Fork it ( https://github.com/[my-github-username]/transacted/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request