Class: WhittakerTech::Midas::Coin::Converter::BankProvider
- Inherits:
-
Object
- Object
- WhittakerTech::Midas::Coin::Converter::BankProvider
- Defined in:
- app/models/whittaker_tech/midas/coin/converter/bank_provider.rb
Overview
Default currency-conversion provider: wraps Money.default_bank (or any explicit Money::Bank::* instance) behind the adapter interface WhittakerTech::Midas::Coin::Converter expects.
Adapter interface (duck-typed):
#exchange(money, currency_code) -> Money
#name -> String (recorded as Exchange#source)
#exchange_at(money, currency_code, at:) -> Money (optional; only
needed to support a non-default at:. This provider does not define
it — the default Money::Bank::VariableExchange has no historical
capability at all.)
Instance Method Summary collapse
- #exchange(money, currency_code) ⇒ Money
-
#initialize(bank = Money.default_bank) ⇒ BankProvider
constructor
A new instance of BankProvider.
-
#name ⇒ String
Recorded on Exchange#source.
Constructor Details
#initialize(bank = Money.default_bank) ⇒ BankProvider
Returns a new instance of BankProvider.
17 18 19 |
# File 'app/models/whittaker_tech/midas/coin/converter/bank_provider.rb', line 17 def initialize(bank = Money.default_bank) @bank = bank end |
Instance Method Details
#exchange(money, currency_code) ⇒ Money
24 25 26 27 28 29 |
# File 'app/models/whittaker_tech/midas/coin/converter/bank_provider.rb', line 24 def exchange(money, currency_code) # NOTE: deliberately NOT `money.exchange_to(currency_code)` — that # method hardcodes Money.default_bank internally (money gem 6.x) and # would silently ignore a `using:` override. Call the bank directly. @bank.exchange_with(money, Money::Currency.new(currency_code)) end |
#name ⇒ String
Returns recorded on Exchange#source.
32 33 34 |
# File 'app/models/whittaker_tech/midas/coin/converter/bank_provider.rb', line 32 def name "money:#{@bank.class.name}" end |