FunWithFlags

Build StatusHex.pmhexdocs.pm

FunWithFlags, the Elixir feature flag library.

This library is still a work in progress and is not ready to use

Goals

This library is meant to be an OTP application that provides an Elixir API to toggle and query feature flags and an (authenticated) web UI for administrators.

It should store feature flag information in Redis for persistence and syncronize different nodes, but it should also maintain a local cache in an ETS table for fast lookup. When flags are added or toggled, nodes should be notified (via Redis PubSub or polling) and update their local ETS representation.

Different kind of feature flags should be supported:

The planned functionality of this library is heavily inspired by the flipper Ruby gem, although with a focus on:

Just as Elixir and Phoenix are meant to scale better than Ruby on Rails with high levels of traffic and concurrency, FunWithFlags should aim to be more scalable than Flipper.

Usage

Still a work in progress, expect breaking changes.

FunWithFlags.enabled?(:cool_new_feature)
false

{:ok, true} = FunWithFlags.enable(:cool_new_feature)

FunWithFlags.enabled?(:cool_new_feature)
true

{:ok, false} = FunWithFlags.disable(:cool_new_feature)

FunWithFlags.enabled?(:cool_new_feature)
false

Installation

The package can be installed by adding fun_with_flags to your list of dependencies in mix.exs:

def deps do
  [{:fun_with_flags, "~> 0.0.1"}]
end

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