2 / 27

3 / 27

EUR 4 / 27

USD GBP CAD … 5 / 27

💰

Represent and exchange Money. gem “money-rails”

6 / 27

42.to_money(:eur).exchange_to(:usd).to_f # => 48.8 7 / 27

config/initializers/money.rb MoneyRails.configure do |config| bank = Money::Bank::VariableExchange.new bank.add_rate(“EUR”, “USD”, 1.16) bank.add_rate(“USD”, “EUR”, 1 / 1.16) # … config.default_bank = bank end

8 / 27

🏦

Fetch the current currency. gem “eu_central_bank”

9 / 27

config/initializers/money.rb MoneyRails.configure do |config| bank = EuCentralBank.new bank.update_rates config.default_bank = bank end

10 / 27

11 / 27

12 / 27

13 / 27

14 / 27

15 / 27

16 / 27

class DailyRateUpdater include Sidekiq::Worker def perform # 1. Récupérer les taux de change du jour # 2. Les enregistrer en base de données end end 17 / 27

42.to_money(:eur).exchange_to(:usd).to_f # => 48.8 18 / 27

😍

Fetch and store the current currency. gem “active_currency”

19 / 27

config/initializers/money.rb MoneyRails.configure do |config| config.default_bank = ActiveCurrency::Bank.new end

20 / 27

class DailyRateUpdater include Sidekiq::Worker def perform ActiveCurrency::AddRates.call(%w[EUR USD]) end end 21 / 27

ActiveCurrency::Rate.value_for(“EUR”, “USD”, 1.day.ago) # => 1.162 22 / 27

✨ Avant ActiveCurrency Mise à jour Démarrage Tâche journalière Lecture Mémoire Base de données (+ cache) 23 / 27

Inconvénients Performances moins bonnes en lecture 😔 24 / 27

Avantages 📆 Choisir quand mettre à jour le taux Ne pas dépendre d’un appel API au démarrage Historiser les taux de conversion utilisés Utiliser les mêmes taux de change sur chaque serveur 📈 💥 🤝 25 / 27

active_currency v1.0 26 / 27

Merci ! github.com/sunny/active_currency @sunfox sur Twitter @sunfox@mamot.fr sur Mastodon KissKissBankBank.com cults3d.com Je vous ait dit qu’on recrutait ? Icône “Hello” de Sewon Park. CC BY Icône “Love” de Gregor Cresnar. CC BY Icône “Recovering heart” de Sergey Demushkin. CC BY Icône “Party” de Adrien Coquet. CC BY 27 / 27