View Source Bonfire.Common.ExtensionModules (bonfire v0.3.5-classic-beta.10)

A Global cache of known extension modules to be queried by associated schema, or vice versa.

Use of the ExtensionModules Service requires:

  1. Exporting declared_extension/0 in relevant modules (or use the declare_extension/2 macro), returning a map
  2. To populate :bonfire, :ui_modules_search_path in extension the list of OTP applications where extension_modules are declared.
  3. Start the Bonfire.Common.ExtensionModules application before querying.
  4. OTP 21.2 or greater, though we recommend using the most recent release available.

While this module is a GenServer, it is only responsible for setup of the cache and then exits with :ignore having done so. It is not recommended to restart the service as this will lead to a stop the world garbage collection of all processes and the copying of the entire cache to each process that has queried it since its last local garbage collection.

Link to this section Summary

Types

A query is either a extension_module name atom or (Pointer) id binary

Functions

Returns a specification to start this module under a supervisor.

Get a extension identified by schema

Populates the global cache with extension_module data via introspection.

Link to this section Types

@type query() :: binary() | atom()

A query is either a extension_module name atom or (Pointer) id binary

Link to this section Functions

Returns a specification to start this module under a supervisor.

See Supervisor.

Get a extension identified by schema

Link to this function

extension_function_error(error, args)

View Source
Link to this function

extension_module(module)

View Source
Link to this function

search_app_modules(search_path \\ search_path())

View Source
@spec start_link(ignored :: term()) :: GenServer.on_start()

Populates the global cache with extension_module data via introspection.