lib/money/bank/single_currency.rb
require 'money/bank/base'
class Money
module Bank
# Raised when trying to exchange currencies
class DifferentCurrencyError < Error; end
# Class to ensure client code is operating in a single currency
# by raising if an exchange attempts to happen.
#
# This is useful when an application uses multiple currencies but
# it usually deals with only one currency at a time so any arithmetic
# where exchanges happen are erroneous. Using this as the default bank
# means that that these mistakes don't silently do the wrong thing.
class SingleCurrency < Base
# Raises a DifferentCurrencyError to remove possibility of accidentally
# exchanging currencies
def exchange_with(from, to_currency, &block)
raise DifferentCurrencyError, "No exchanging of currencies allowed: #{from} #{from.currency} to #{to_currency}"
end
end
end
end