
Security News
Vite Releases Technical Preview of Rolldown-Vite, a Rust-Based Bundler
Vite releases Rolldown-Vite, a Rust-based bundler preview offering faster builds and lower memory usage as a drop-in replacement for Vite.
This ruby gem lets you fetch exchange rates for ~170 currencies (a total of ~14,000 imputed currency pairs) for free, on an hourly frequently (sufficient for most, but not all, use cases), and takes only about 5 minutes to set up.
The usage instructions below show how to create a currencies table, run a rake task to update the exchange rates, and use convert()
to convert between currencies inside your application. Total time to implementation should be ~5 minutes.
Install the gem in one of the usual ways:
bundle add simple_forex
gem install simple_forex
Use the included generator will make a currencies table migration:
rails generate simple_forex
Then run the migration:
rake db:migrate
Create a free API key, open credentials.yml (EDITOR="vim" rails credentials:edit
) and add the API key to credentials.yml like so:
# config/credentials.yml.enc
simple_forex:
openexchangerates_key: 1234abcd
Run this rate task to retrieve currencies and store them in the currencies table:
rake simple_forex:fetch_rates
View the exchange rate data in the rails console with Currency.last
:
=> #<SimpleForex::Currency:0x000000013c4bae78
id: 1,
blob:
{"base"=>"USD",
"rates"=>
{"AED"=>"3.67286",
"AFN"=>"89.49999",
"ALL"=>"108.164235",
"AMD"=>"388.147964",
"ANG"=>"1.798456",
"AOA"=>"503.891",
"ARS"=>"198.1831",
"AUD"=>"1.485125",
...
"XOF"=>"617.115134",
"XPD"=>"0.00069861",
"XPF"=>"112.265627",
"XPT"=>"0.00103175",
"YER"=>"250.300106",
"ZAR"=>"18.23512",
"ZMW"=>"19.934751",
"ZWL"=>"322.0"},
"license"=>"https://openexchangerates.org/license",
"timestamp"=>1678096800,
"disclaimer"=>"Usage subject to terms: https://openexchangerates.org/terms"},
created_at: Mon, 06 Mar 2023 10:43:54 UTC +00:00,
updated_at: Mon, 06 Mar 2023 10:43:54 UTC +00:00>
Optional
Schedule the simple_forex:fetch_rates
rake task to run at the frequency you require.
Tip: open exchange rates's free API gives 1000 calls monthly, and there are ~700 hours in month, so you safely run it hourly while staying within the free limit.
Convert currencies by calling
require 'simple_forex'
convert(amount, from_currency, to_currency)
Example
require 'simple_forex'
convert(100, 'USD', 'EUR')
# => 0.939717e2
Note ruby decimals use scientific notation, evidenced by the e
toward the end of the value.
This gem probably only works on Rails 6 and Rails 7 apps, and only those using a postgres database.
Bug reports and pull requests are very welcome at https://github.com/stevecondylios/simple_forex.
The gem is available as open source under the terms of the MIT License.
FAQs
Unknown package
We found that simple_forex demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Vite releases Rolldown-Vite, a Rust-based bundler preview offering faster builds and lower memory usage as a drop-in replacement for Vite.
Research
Security News
A malicious npm typosquat uses remote commands to silently delete entire project directories after a single mistyped install.
Research
Security News
Malicious PyPI package semantic-types steals Solana private keys via transitive dependency installs using monkey patching and blockchain exfiltration.