Grouping actions 
You can use the stage method to group multiple methods into one execution group.
INFO
Usage of the position option for make will sort only in stage.
ruby
stage do
  make :create_user!
  make :create_blog_for_user!
  make :create_post_for_user_blog!
endOption only_if 
Before calling methods inside stage, the condition described in only_if will be checked.
ruby
stage do
  only_if ->(context:) { Settings.features.preview.enabled }
  
  make :create_user!
  make :create_blog_for_user!
  make :create_post_for_user_blog!
endOption only_unless 
ruby
stage do
  only_unless ->(context:) { Settings.features.preview.disabled }
  
  make :create_user!
  make :create_blog_for_user!
  make :create_post_for_user_blog!
endThe opposite of the only_if option.
Option wrap_in 
Group of methods in stage can be wrapped in something. For example, it could be ActiveRecord::Base.transaction from Rails.
ruby
stage do
  wrap_in ->(methods:, context:) { ActiveRecord::Base.transaction { methods.call } }
  
  make :create_user!
  make :create_blog_for_user!
  make :create_post_for_user_blog!
endOption rollback 
If an exception occurs in one of the methods in the group or in wrap_in, this can be handled using the rollback method.
ruby
stage do
  wrap_in ->(methods:, context:) { ActiveRecord::Base.transaction { methods.call } }
  rollback :clear_data_and_fail!
  
  make :create_user!
  make :create_blog_for_user!
  make :create_post_for_user_blog!
end
# ...
def clear_data_and_fail!(e)
  # ...
  fail!(message: "Failed to create data: #{e.message}")
end