Installation

Add this line to your application's Gemfile:

gem 'rietveld'

And then execute:

$ bundle

Or install it yourself as:

$ gem install rietveld

Example

class MoneyTransferContext < Rietveld::Context
  role :source_account do
    def withdraw(amount)
      if balance >= amount
        decrease_balance(amount)
        amount
      else
        raise 'Insufficient funds'
      end
    end

    def transfer(amount)
      .deposit(withdraw(amount))
    end
  end

  role :destination_account do
    def deposit(amount)
      increase_balance(amount)
    end
  end

  def transfer(amount)
    .transfer(amount)
  end
end