| Class | Money::RatesStore::Memory |
| In: |
lib/money/rates_store/memory.rb
|
| Parent: | Object |
Class for thread-safe storage of exchange rate pairs. Used by instances of +Money::Bank::VariableExchange+.
@example
store = Money::RatesStore::Memory.new
store.add_rate 'USD', 'CAD', 0.98
store.get_rate 'USD', 'CAD' # => 0.98
# iterates rates
store.each_rate {|iso_from, iso_to, rate| puts "#{from} -> #{to}: #{rate}" }
| INDEX_KEY_SEPARATOR | = | '_TO_'.freeze |
| index | [R] | |
| options | [R] |
Initializes a new +Money::RatesStore::Memory+ object.
@param [Hash] opts Optional store options. @option opts [Boolean] :without_mutex disables the usage of a mutex @param [Hash] rt Optional initial exchange rate data.
Registers a conversion rate and returns it. Uses Mutex to synchronize data access.
@param [String] currency_iso_from Currency to exchange from. @param [String] currency_iso_to Currency to exchange to. @param [Numeric] rate Rate to use when exchanging currencies.
@return [Numeric]
@example
store = Money::RatesStore::Memory.new
store.add_rate("USD", "CAD", 1.24515)
store.add_rate("CAD", "USD", 0.803115)
Iterate over rate tuples (iso_from, iso_to, rate)
@yieldparam iso_from [String] Currency ISO string. @yieldparam iso_to [String] Currency ISO string. @yieldparam rate [Numeric] Exchange rate.
@return [Enumerator]
@example
store.each_rate do |iso_from, iso_to, rate|
puts [iso_from, iso_to, rate].join
end
Retrieve the rate for the given currencies. Uses Mutex to synchronize data access. Delegates to +Money::RatesStore::Memory+
@param [String] currency_iso_from Currency to exchange from. @param [String] currency_iso_to Currency to exchange to.
@return [Numeric]
@example
store = Money::RatesStore::Memory.new
store.add_rate("USD", "CAD", 1.24515)
store.get_rate("USD", "CAD") #=> 1.24515