ExternalState

Store state, as a properties structure, externally to a process.

Usage

defmodule MyGenserver do
use ExternalState, persist: false, props: [foo: true]
def init(:ok) do
init_ex_state() # external state is now at the defaults specified in use
end
# ...
def do_foo do
# ... something that sets foo to true ...
merge_ex_state(foo: true)
end
def undo_foo do
# ... something that sets foo to false ...
merge_ex_state(foo: false)
# or: merge_ex_state(%{foo: false})
end
def foo? do
get_ex_state().foo
end
end

API

The following are added to your module when you use ExternalState:

If ExternalState is used with persist: true, then the external state will remain valid after the process that calls init_ex_state/0 exits. This is the default.

Installation

If available in Hex, the package can be installed by adding external_state to your list of dependencies in mix.exs:

def deps do
[
{:external_state, "~> 1.0.4"}
]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/external_state.