Changelog
v1.1.0 (2020-05-04)
Enhancements
- Configuring
startup_sync: true
allows you to ensure a synchronous database load is done during startup. This may have unwanted consequences when your loading process takes longer than around 5 seconds (default startup timeout), e.g. when loading a database from a remote location - Usage of deprecated
Supervisor
functions has been removed (#30)
- Configuring
v1.0.0 (2019-09-08)
The adapter Geolix.Adapter.MMDB2
has been extracted a separate repository. You should be able to upgrade to the external adapter by changing your project's dependencies from :geolix
to :geolix_adapter_mmdb2
with an appropriate version requirement.
Enhancements
- Database metadata is now available via
Geolix.metadata/0,1
(#26)
- Database metadata is now available via
Backwards incompatible changes
- The database workers function of an adapter will now receive the full database configuration to be configured as the sole parameter
- The lookup function of an adapter will now receive the full database configuration to be used for the lookup as a third parameter
v0.18.0 (2019-03-17)
Enhancements
- Initializer modules can be defined with additional arguments by using
{mod, fun, args}
- Initializer modules can be defined with additional arguments by using
Backwards incompatible changes
- Minimum required Elixir version is now
~> 1.5
- Minimum required Elixir version is now
v0.17.0 (2018-09-02)
Enhancements
- Storage of the internal database loader state has been migrated to a named ets table in order to allow reading from databases while the loading cycle has not yet been completed (#20).
- The
:is_in_european_union
information has been added to theCountry
andRepresentedCountry
result structs
Backwards incompatible changes
Adapters are now responsible to return the complete (and final) result of the lookup. No additional modifications will be made. Several module namespaces have been renamed for this:
Geolix.Model -> Geolix.Adapter.MMDB2.Model
Geolix.Record -> Geolix.Adapter.MMDB2.Record
Geolix.Result -> Geolix.Adapter.MMDB2.Result
v0.16.0 (2018-02-21)
Enhancements
- Configuration can be done on supervisor (re-) start by setting a
{mod, fun}
tuple for the config key:init
. This method will be called without arguments - Every configured database can define a
{mod, fun}
tuple for the config key:init
. This method, called upon database supervisor (re-) start, receives the current database configuration and is expected to return the full configuration used for starting the individual database - Unloading a database now calls
unload_database/1
of the unloaded database adapter passing the current configuration and expecting:ok
as a result
- Configuration can be done on supervisor (re-) start by setting a
v0.15.1 (2017-12-04)
Bug fixes
- The MMDB2 decoding library is now properly included in releases
v0.15.0 (2017-11-25)
Enhancements
- The MMDB2 file format decoding logic has been extracted to the new
:mmdb2_decoder
library
- The MMDB2 file format decoding logic has been extracted to the new
Backwards incompatible changes
- Minimum required Elixir version is now
~> 1.3
- Minimum required Elixir version is now
v0.14.0 (2017-06-20)
Enhancements
- Configuration errors are logged and/or returned
- Databases can be unloaded. This is done lazy so while still being in memory it won't be reloaded or used for lookups
- Databases in tarball format (
.tar
or.tar.gz
) are now supported (#16) - Errors are now always returned in a tuple format (
{:error, type}
) - Errors occurring while initially loading databases (or when calling
Geolix.reload_databases/0
) are now sent toLogger.error
(#16) - "GeoLite2-ASN" databases return structs instead of plain maps
- System environment configuration can set an optional default value to be used if the environment variable is unset
- When an error occurs during database load the database will be excluded from the lookup process
Backwards incompatible changes
- Previous
{:error, String.t}
return values have been removed in favor of tuples andLogger.error/1
- Previous
v0.13.0 (2017-04-12)
Backwards incompatible changes
- Minimum required Elixir version is now
~> 1.2
- Minimum required Erlang version is now
~> 18.0
- Minimum required Elixir version is now
v0.12.0 (2017-03-26)
Ownership has been transferred to the
elixir-geolix
organisationBackwards incompatible changes
- Support for non-map database configuration has been removed
- Support for
GeoIP2-Precision-City
andGeoIP2-Precision-Country
database files has been removed (matching upstream)
v0.11.0 (2016-12-28)
Enhancements
- All configured databases can be reloaded in the background using
Geolix.reload_databases/0
- Database configuration has been extended to support adapters
Geolix.Adapter.Fake
is provided for a custom managed database with fixed/pre-defined responsesGeoIP-Enterprise
databases return structs instead of plain maps- Lookups are done with a configurable timeout
- All configured databases can be reloaded in the background using
Deprecations
- Configuring the application's databases using
{:id, filename}
tuples (orKeyword.t
) has been deprecated in favor of a list of database definition maps Geolix.set_database/2
has been deprecated in favor of the newGeolix.load_database/1
- Configuring the application's databases using
v0.10.1 (2016-06-04)
Enhancements
- Lookup results are generated with
:en
as the default if no locale is passed
- Lookup results are generated with
v0.10.0 (2016-04-04)
Enhancements
- Databases are reloaded if a storage process gets restarted
- Databases can be directly loaded from remote (http) locations if configured (#10)
- Paths can be configured by accessing the system environment
- Storage processes are now supervised
Bug fixes
- Traits from the database are properly passed on in the result
v0.9.0 (2015-11-16)
Enhancements
- Allows usage of
GeoIP2-Precision-ISP
databases - Lookups querying all registered databases are done concurrently
- Allows usage of
v0.8.0 (2015-07-18)
Enhancements
- Allows direct usage of gzip'ed database files
:locale
lookup option for easier access to translatable result values- Dependencies not used in production builds are marked as optional
Bug fixes
Float
values are rounded to 4 decimal digitsDouble
values are rounded to 8 decimal digits
v0.7.0 (2015-02-16)
Enhancements
- Supports IPv4 lookups in IPv6 notation ("0:0:0:0:0:FFFF:xxxx:xxxx")
- Supports IPv6 lookups
v0.6.0 (2015-02-08)
- Initial Release