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.3"}
  ]
end

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