-
Enhancements
- Calling
RefInspector.parse/1
with an empty referer (""
ornil
) will now return the input as is in the result struct instead of previously returningnil
for both inputs
- Calling
-
Bug fixes
- The mix download task should no longer start unnecessary applications
-
Backwards incompatible changes
- Minimum required Elixir version is now
~> 1.9
- Several deprecated functions have been removed completely:
RefInspector.Downloader.path_local/1
RefInspector.Downloader.path_remote/1
RefInspector.Downloader.read_remote/1
RefInspector.Downloader.README.path_local/0
RefInspector.Downloader.README.path_priv/0
- Startup is now done with a blocking database load by default
- Minimum required Elixir version is now
- Bug fixes
- Default remote URL for the referer parser database has been changed after upstream changes (#3)
- Bug fixes
-
Enhancements
- Warnings when starting without a database available can be silenced
-
Bug fixes
- The mix download task now works properly with initializer modules
-
Enhancements
- Configuring
startup_sync: true
allows you to ensure a synchronous database load is attempted before allowing to parse referers - Database entries are now stored in a single named table instead of using an intermediate reference table
- Default configuration entries for files and urls are available through
RefInspector.Config.default_files/0
andRefInspector.Config.default_urls/0
- Output of mix task
ref_inspector.download
can be prevented by passing--quiet
upon invocation. This does NOT imply--force
and will still ask for confirmation - Passing
async: false
toRefInspector.reload/1
allows you to block your calling process until the reload has finished - The library used to download the database files can be changed by configuring a module implementing the
RefInspector.Downloader.Adapter
behaviour - The library used to read YAML files can be changed by using the
:yaml_file_reader
configuration
- Configuring
-
Deprecations
- Several functions are now declared internal and will result in a
Logger.info/1
message when called until they will be eventually removed:RefInspector.Downloader.path_local/1
RefInspector.Downloader.path_remote/1
RefInspector.Downloader.read_remote/1
RefInspector.Downloader.README.path_local/0
RefInspector.Downloader.README.path_priv/0
- Several functions are now declared internal and will result in a
-
Ownership has been transferred to the
elixir-inspector
organisation -
Enhancements
- Documentation is now available inline (
@moduledoc
, ...) with theREADME.md
file targeting the repository (development) instead of releases - Downloading the databases ensures hackney is started to allow calling
mix run --no-start -e "RefInspector.Downloader.download()"
- Initializer modules can be defined with additional arguments by using
{mod, fun, args}
- Parsing can now be performed on
URI.t()
referers - The default database path has been set to
Application.app_dir(:ref_inspector, "priv")
- The download mix task will now exit with code
1
if it aborts due to missing configuration
- Documentation is now available inline (
-
Backwards incompatible changes
- Internal parser process pooling has been removed. If you require pooling you need to manually wrap
RefInspector.parse/1
- Medium information in the result struct is now returned as a
String.t()
instead of anatom
. The only exceptions are:unknown
and:internal
referers - Minimum required Elixir version is now
~> 1.5
- Support for
{:system, var}
configuration has been removed
- Internal parser process pooling has been removed. If you require pooling you need to manually wrap
-
Enhancements
- Parsing speed has been improved and made more independent of database size
- The configurable
:init
method will now be automatically executed when running the mix download task without manually ensuring the application is started
-
Deprecations
- Accessing the system environment by configuring
{:system, var}
or{:system, var, default}
will now result in aLogger.info/1
message and will stop working in a future release
- Accessing the system environment by configuring
-
Backwards incompatible changes
- The mix task alias
ref_inspector.yaml.download
has been removed - The reload alias
RefInspector.reload_databases/0
has been removed
- The mix task alias
- Enhancements
- Finding the data table is now done via a named lookup table instead of calling the database state server
- Old data tables are deleted with a configurable delay after reloading to avoid race conditions (and the resulting empty lookup responses)
- If you need to check if the database is loaded (i.e. "no longer empty") you can use
RefInspector.ready?/0
-
Enhancements
- Download task name has been shortened to
ref_inspector.download
- Reloading the database if part of the configuration is missing or broken (database path / database files) will issue a warning while resuming operation with an empty database
- Download task name has been shortened to
-
Deprecations
- The reload method
RefInspector.reload_databases/0
has been renamed toRefInspector.reload/0
- The mix task
ref_inspector.yaml.download
has been renamed. The alias in place will be removed in a future version
- The reload method
-
Bug fixes
- ETS tables are now properly cleaned after reload
-
Enhancements
- All databases can be reloaded (asynchronously) using
RefInspector.reload_databases/0
- 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 - When using the mix download task with a default remote configuration an information README file is placed next to the downloaded file(s)
- All databases can be reloaded (asynchronously) using
-
Soft deprecations (no warnings)
- Support for
{:system, "ENV_VARIABLE"}
configuration has been removed from the documentation. It will eventually be removed completely after a proper deprecation phase
- Support for
- Backwards incompatible changes
- Minimum required Elixir version is now
~> 1.3
- Minimum required Elixir version is now
- Enhancements
- Supervision can now be done without starting the application
- The database downloader has been promoted to a directly usable module
-
Enhancements
- Empty referers (
""
ornil
) now return a result without performing an actual lookup - System environment configuration can set an optional default value to be used if the environment variable is unset
- Empty referers (
-
Bug fixes
- Properly handles
nil
values passed to the lookup
- Properly handles
-
Backwards incompatible changes
- Support for single
:remote_url
download configuration has been removed
- Support for single
-
Enhancements
- Downloaded files can be automatically stored under a custom filename differing from the URL basename
- Multiple files can be configured for download
-
Deprecations
- Configuring a single
:remote_url
for download has been deprecated
- Configuring a single
-
Enhancements
- Multiple databases can be configured to load during startup. Lookups are done in order until a match is found
-
Backwards incompatible changes
- Downloaded databases are stored under the basename of the remote file instead of the filename of the "first configured database"
- Support for
:yaml
as database configuration has been removed
-
Enhancements
- Remote URL of database file is now configurable
-
Deprecations
- Configuring a single
:yaml
as the database has been deprecated
- Configuring a single
-
Backwards incompatible changes
- Support for loading a database file at runtime using
RefInspector.load/1
has been removed
- Support for loading a database file at runtime using
-
Enhancements
- Database download is done using hackney in order to prepare an upcoming auto-update feature
- If the initial load of the database (during process initialisation) fails a message will be sent through
Logger.info/1
-
Backwards incompatible changes
- Downloads are now done using
:hackney
instead ofmix
. This may force you to manually reconfigure the client - Minimum required Elixir version is now
~> 1.2
- Minimum required Erlang version is now
~> 18.0
- Downloads are now done using
-
Enhancements
- Database is reloaded if the storage process gets restarted
- Path can be configured by accessing the system environment
- Referer database can be reloaded using
RefInspector.load/1
-
Backwards incompatible changes
- Reloading the database drops previously loaded (unconfigured) entries
- Enhancements
- Domains to be detected as
:internal
can be configured
- Domains to be detected as
-
Enhancements
- Dependencies not used in production builds are marked as optional
- Displays expanded download path for
mix ref_inspector.yaml.download
- Verification script now automatically downloads database file
- Worker pool options are no longer defined at compile time
-
Backwards incompatible changes
- Pool configuration is now expected to be a
Keyword.t()
- Pool configuration is now expected to be a
- Initial Release