CurrencyConverterPlus
CurrencyConverterPlus é uma gem Ruby simples para conversão de moedas, com suporte a taxas atuais e históricas, usando a API gratuita do exchangerate.host.
✨ Recursos
- Conversão entre duas moedas com taxa atual
- Consulta das taxas ao vivo de múltiplas moedas
- Consulta de taxas históricas em uma data específica
- Suporte a configuração por
.env
ou programaticamente
🔧 Instalação
Você pode instalar a gem diretamente pelo RubyGems:
gem install currency_converter_plus
Ou se preferir, adicione esta linha ao seu Gemfile
:
gem 'currency_converter_plus', git: 'https://github.com/GodKelvin/currency_converter_plus.git', tag: 'v0.1.0'
E depois execute:
bundle install
🔑 Obtendo a chave da API
- Vá para: https://exchangerate.host/#/
- Clique em Get Free API Key
- Registre-se com seu e-mail
- Você receberá um access_key, copie-o
🛠️ Configuração
Você pode configurar a chave da API de duas formas:
1. Via arquivo .env
Crie um arquivo .env
na raiz do seu projeto:
EXCHANGE_RATE_API_KEY=sua_chave_aqui
E certifique-se de que a gem dotenv
esteja carregada. No seu código principal:
require 'dotenv'
Dotenv.load
2. Manualmente no código
CurrencyConverter.configure do |config|
config.access_key = "sua_chave_aqui"
end
📦 Uso
Conversão de valores (convert
)
require 'currency_converter'
result = CurrencyConverter.convert(100, from: 'USD', to: 'BRL')
puts "100 USD em BRL: #{result}"
Taxas ao vivo (live
)
Retorna taxas de câmbio em tempo real com base na moeda base.
CurrencyConverter.live(base: 'USD', currencies: ['EUR', 'GBP'])
# => { "USDEUR"=>0.91, "USDGBP"=>0.78, ... }
Se currencies
for omitido, retorna todas as taxas disponíveis.
Taxas históricas (historical
)
Consulta taxas de uma data específica (formato YYYY-MM-DD
):
CurrencyConverter.historical(date: '2024-01-01', base: 'EUR', currencies: ['USD', 'JPY'])
# => { "EURUSD"=>1.09, "EURJPY"=>157.15 }
❗ Tratamento de erros
- Se a requisição falhar ou os parâmetros forem inválidos, uma exceção
CurrencyConverter::Error
será lançada. - Certifique-se de capturar exceções onde apropriado:
begin
CurrencyConverter.convert(100, from: 'USD', to: 'EUR')
rescue CurrencyConverter::Error => e
puts "Erro na conversão: #{e.message}"
end
📁 Estrutura do Projeto
currency_converter/
├── lib/
│ ├── currency_converter.rb
│ ├── currency_converter/version.rb
│ └── currency_converter/configuration.rb
├── .env
├── currency_converter.gemspec
└── README.md
📄 Licença
Esta gem é open-source sob a licença MIT.
🤝 Contribuições
Pull requests são bem-vindos! Para grandes mudanças, por favor, abra uma issue primeiro para discutir o que você gostaria de modificar.
📬 Contato
Linkedin: Kelvin Lehrback