RussianCentralBank
This gem provides access to the Central Bank of Russia currency exchange. It can be used as a standalone exchange rates parser and also extends Money::Bank::VariableExchange with Money::Bank::RussianCentralBank
Installation
Add this line to your application's Gemfile:
gem 'russian_central_bank'
And then execute:
$ bundle
Or install it yourself as:
$ gem install russian_central_bank
NOTE: use 0.x version of russian_central_bank
for money
versions < 6.0
Dependencies
Usage
Standalone currency rates provider
require 'russian_central_bank'
Money::Bank::RussianCentralBankFetcher.new.perform()
Money::Bank::RussianCentralBankFetcher.new.perform(Date.new(2010, 12, 31))
Regular usage (with money gem)
require 'russian_central_bank'
Money.locale_backend = :currency
bank = Money::Bank::RussianCentralBank.new
Money.default_bank = bank
bank.update_rates
Money.new(1000_00, "USD").exchange_to('RUB').format
Money.new(1000_00, "USD").exchange_to('EUR').format
Specific date rates
bank.update_rates(Date.new(2010, 12, 31))
Money.new(1000_00, "USD").exchange_to('RUB').format
bank.rates_updated_at
bank.rates_updated_on
Autoupdate
bank.ttl = 1.day
bank.rates_expired_at
Safe rates fetch
There are some cases, when the cbr.ru
doesn't return HTTP 200.
To avoid issues in production, you use fallback:
bank = Money::Bank::RussianCentralBank.new
begin
bank.update_rates
rescue Money::Bank::RussianCentralBankFetcher::FetchError => e
Rails.logger.info "CBR failed: #{e.response}"
Money.default_bank = Money::Bank::VariableExchange.new
Money.default_bank.add_rate(:usd, :eur, 1.3)
Money.default_bank.add_rate(:eur, :usd, 0.7)
end
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request