Provided by: rex_1.14.0-1_all
NAME
Rex::Transaction - Transaction support
DESCRIPTION
With this module you can define transactions and rollback scenarios on failure.
SYNOPSIS
use Rex::Transaction; task 'do-something', 'server01', sub { transaction { on_rollback { rmdir '/tmp/mydata'; }; mkdir '/tmp/mydata'; upload 'files/myapp.tar.gz', '/tmp/mydata'; run 'tar xzf myapp.tar.gz -C /tmp/mydata'; if ( $? != 0 ) { die('Error extracting myapp.tar.gz'); } }; };
EXPORTED FUNCTIONS
transaction($codeRef) Start a transaction for $codeRef. If $codeRef dies, Rex will run the on_rollback <https://metacpan.org/pod/Rex::Transaction#on_rollback> code to roll back the transaction. task 'deploy', group => 'frontend', sub { on_rollback { rmdir '...'; }; deploy 'myapp.tar.gz'; }; task 'restart_server', group => 'frontend', sub { service apache2 => 'restart'; }; task 'all', group => 'frontend', sub { transaction { do_task [qw/deploy restart_server/]; }; }; on_rollback($codeRef) This will execute $codeRef if a step in the transaction <https://metacpan.org/pod/Rex::Transaction#transaction> fails.