class Money::Bank::RussianCentralBank
Attributes
rates_expired_at[R]
rates_updated_at[R]
rates_updated_on[R]
ttl[R]
Public Instance Methods
add_rate(from, to, rate)
click to toggle source
Calls superclass method
# File lib/money/bank/russian_central_bank.rb, line 22 def add_rate(from, to, rate) super(from, to, rate) super(to, from, 1.0 / rate) end
flush_rates()
click to toggle source
# File lib/money/bank/russian_central_bank.rb, line 8 def flush_rates @store = Money::RatesStore::Memory.new end
get_rate(from, to)
click to toggle source
Calls superclass method
# File lib/money/bank/russian_central_bank.rb, line 27 def get_rate(from, to) update_rates if rates_expired? super || indirect_rate(from, to) end
rates_expired?()
click to toggle source
# File lib/money/bank/russian_central_bank.rb, line 38 def rates_expired? rates_expired_at && rates_expired_at <= Time.now end
ttl=(value)
click to toggle source
# File lib/money/bank/russian_central_bank.rb, line 32 def ttl=(value) @ttl = value update_expired_at @ttl end
update_rates(date = Date.today)
click to toggle source
# File lib/money/bank/russian_central_bank.rb, line 12 def update_rates(date = Date.today) store.transaction do update_parsed_rates(exchange_rates(date)) @rates_updated_at = Time.now @rates_updated_on = date update_expired_at store.send(:rates) end end
Private Instance Methods
exchange_rates(date)
click to toggle source
# File lib/money/bank/russian_central_bank.rb, line 48 def exchange_rates(date) fetcher.perform(date) end
fetcher()
click to toggle source
# File lib/money/bank/russian_central_bank.rb, line 44 def fetcher @fetcher ||= RussianCentralBankFetcher.new end
indirect_rate(from, to)
click to toggle source
# File lib/money/bank/russian_central_bank.rb, line 60 def indirect_rate(from, to) get_rate('RUB', to) / get_rate('RUB', from) end
local_currencies()
click to toggle source
# File lib/money/bank/russian_central_bank.rb, line 64 def local_currencies @local_currencies ||= Money::Currency.table.map { |currency| currency.last[:iso_code] } end
update_expired_at()
click to toggle source
# File lib/money/bank/russian_central_bank.rb, line 52 def update_expired_at @rates_expired_at = if ttl @rates_updated_at ? @rates_updated_at + ttl : Time.now else nil end end
update_parsed_rates(rates)
click to toggle source
# File lib/money/bank/russian_central_bank.rb, line 68 def update_parsed_rates(rates) add_rate('RUB', 'RUB', 1) rates.each do |rate| begin if local_currencies.include?(rate[:code]) add_rate( 'RUB', rate[:code], 1 / (rate[:value] / rate[:nominal]) ) end rescue Money::Currency::UnknownCurrency end end end