Packages
ex_money
2.2.0
6.1.1
6.1.0
6.0.0
6.0.0-rc.0
5.24.2
5.24.1
5.24.0
retired
5.23.0
5.22.0
5.21.0
5.20.0
5.19.2
5.19.1
5.19.0
5.18.0
5.17.2
5.17.1
5.17.0
5.16.1
5.16.0
5.15.4
5.15.3
5.15.2
5.15.1
5.15.0
5.14.1
5.13.0
5.12.4
5.12.3
5.12.2
5.12.1
5.12.0
5.11.0
5.10.0
5.9.0
5.8.0
5.7.4
5.7.3
5.7.2
5.7.1
5.7.0
5.6.0
5.5.5
5.5.4
5.5.3
5.5.2
5.5.1
5.5.0
5.4.1
5.4.0
5.4.0-rc.0
5.3.2
5.3.1
5.3.0
5.2.1
5.2.0
5.1.0
5.0.2
5.0.1
5.0.0
retired
4.4.3
4.4.2
retired
4.4.1
4.4.0
4.3.0
4.2.2
4.2.1
4.2.0
4.1.0
4.0.0
3.4.4
3.4.3
3.4.2
3.4.1
3.4.0
3.3.1
3.3.0
3.2.4
3.2.3
3.2.2
3.2.1
3.2.0
3.1.0
3.0.0
2.12.2
2.12.1
retired
2.12.0
retired
2.11.0
2.10.0
2.9.1
2.9.0
2.8.0
2.7.3
2.7.2
2.7.1
2.7.0
2.6.1
2.6.0
2.5.0
2.4.0
2.3.0
2.2.2
2.2.1
2.2.0
2.1.0
2.1.0-rc.1
retired
2.1.0-rc.0
retired
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.1.3
1.1.2
1.1.1
retired
1.1.0
1.0.0
1.0.0-rc.0
retired
0.9.0
retired
0.8.5
retired
0.8.4
retired
0.8.3
retired
0.8.2
retired
0.8.1
retired
0.8.0
retired
0.7.0
retired
0.6.2
retired
0.6.1
retired
0.6.0
retired
0.5.3
retired
0.5.2
retired
0.5.1
retired
0.5.0
retired
0.4.3
retired
0.4.2
retired
0.4.1
retired
0.4.0
retired
0.3.0
retired
0.2.0
retired
0.1.7
retired
0.1.6
retired
0.1.5
retired
0.1.4
retired
0.1.3
retired
0.1.2
retired
0.1.1
retired
0.1.0
retired
0.0.16
retired
0.0.15
retired
0.0.14
retired
0.0.13
retired
0.0.12
retired
0.0.11
retired
0.0.10
retired
0.0.9
retired
0.0.7
retired
0.0.6
retired
0.0.5
retired
0.0.4
retired
0.0.3
retired
0.0.2
retired
Money functions for operations on and localization of a money data type with support for ISO 4217 currencies and ISO 24165 digial tokens (crypto currencies).
Current section
Files
Jump to
Current section
Files
lib/money/application.ex
defmodule Money.Application do
use Application
alias Money.ExchangeRates
require Logger
@auto_start :auto_start_exchange_rate_service
def start(_type, _args) do
import Supervisor.Spec, warn: false
children = [supervisor(Money.ExchangeRates.Supervisor, [])]
opts = [strategy: :one_for_one, name: Money.Supervisor]
supervisor = Supervisor.start_link(children, opts)
if start_exchange_rate_service?() do
ExchangeRates.Supervisor.start_retriever
end
supervisor
end
# Default is to not start the exchange rate service
defp start_exchange_rate_service? do
maybe_log_deprecation()
start? = Money.get_env(@auto_start, true, :boolean)
api_module = ExchangeRates.default_config().api_module
api_module_present? = Code.ensure_loaded?(api_module)
if !api_module_present? do
Logger.error(
"[ex_money] ExchangeRates api module #{api_module_name(api_module)} could not be loaded. " <>
" Does it exist?"
)
Logger.warn("ExchangeRates service will not be started.")
end
start? && api_module_present?
end
defp api_module_name(name) when is_atom(name) do
name
|> Atom.to_string()
|> String.replace_leading("Elixir.", "")
end
defp api_module_name(name) do
name
end
@doc false
def maybe_log_deprecation do
case Application.fetch_env(:ex_money, :delay_before_first_retrieval) do
{:ok, _} ->
Logger.warn(
"[ex_money] Configuration option :delay_before_first_retrieval is deprecated. " <>
"Please remove it from your configuration."
)
Application.delete_env(:ex_money, :delay_before_first_retrieval)
:error ->
nil
end
case Application.fetch_env(:ex_money, :exchange_rate_service) do
{:ok, start?} ->
Logger.warn(
"[ex_money] Configuration option :exchange_rate_service is deprecated " <>
"in favour of :auto_start_exchange_rate_service. Please " <>
"update your configuration."
)
Application.put_env(:ex_money, :auto_start_exchange_rate_service, start?)
Application.delete_env(:ex_money, :exchange_rate_service)
:error ->
nil
end
end
end