class Straight::ExchangeRate::AverageRateAdapter
Public Class Methods
instance(*adapters)
click to toggle source
Takes exchange rate adapters instances or classes as arguments
Calls superclass method
# File lib/straight/exchange_rate_adapters/average_rate_adapter.rb, line 7 def self.instance(*adapters) instance = super() instance.instance_variable_set(:@adapters, adapters.map { |adapter| adapter.respond_to?(:instance) ? adapter.instance : adapter }) instance end
Public Instance Methods
fetch_rates!()
click to toggle source
# File lib/straight/exchange_rate_adapters/average_rate_adapter.rb, line 13 def fetch_rates! failed_fetches = 0 @adapters.each do |adapter| begin adapter.fetch_rates! rescue => e failed_fetches += 1 raise e if failed_fetches == @adapters.size end end end
get_rate_value_from_hash(rates_hash, *keys)
click to toggle source
# File lib/straight/exchange_rate_adapters/average_rate_adapter.rb, line 43 def get_rate_value_from_hash(rates_hash, *keys) raise "This method is not supposed to be used in #{self.class}." end
rate_for(currency_code)
click to toggle source
# File lib/straight/exchange_rate_adapters/average_rate_adapter.rb, line 25 def rate_for(currency_code) rates = [] @adapters.each do |adapter| begin rates << adapter.rate_for(currency_code) rescue CurrencyNotSupported rates << nil end end unless rates.select(&:nil?).size == @adapters.size rates.compact! rates.inject {|sum, rate| sum + rate} / rates.size else raise CurrencyNotSupported end end
rate_to_f(rate)
click to toggle source
# File lib/straight/exchange_rate_adapters/average_rate_adapter.rb, line 47 def rate_to_f(rate) raise "This method is not supposed to be used in #{self.class}." end