Hyde

Feature Toggles for Elixir

Basic Redis backed module to make flipping features on/off for individuals or named groups a snap

WARNING - Alpha software: likely to change APIs significantly as it is under active development

Installation

If available in Hex, the package can be installed as:

  1. Add hyde to your list of dependencies in mix.exs:

    def deps do

     [{:hyde, "~> 0.0.1"}]

    end

  2. Ensure hyde is started before your application:

    def application do

     [applications: [:hyde]]

    end

Usage

Hyde is a convenience wrapper around ExRedis that exposes basic toggling capabilities by checking if a feature is active? using:

Hyde.active? will return {:ok, true} or false

Global

{:ok, client} = Exredis.start_link

if Hyde.active?(client, :my_feature) do
  # Do Feature Code
end

case Hyde.active?(client, :my_feature) do
  {:ok, true} -> 
    # Do Feature Code
  false ->
    # Do Nada
end

# Turn on a feature for all
client |> Hyde.activate(:my_feature)

# Query a feature for all
client |> Hyde.active?(:my_feature) 
#true

client |> Hyde.inactive?(:my_feature) 
#false

ID Based

{:ok, user} = YourApp.User()
{:ok, client} = Exredis.start_link

if Hyde.active?(client, :my_feature, user.id) do
  # Do Feature Code
end

# Turn on a feature for single user
client |> Hyde.activate(:my_feature, user.id)

# Query a feature for single user
client |> Hyde.active?(:my_feature, user.id) 
#true

client |> Hyde.inactive?(:my_feature, user.id) 
#false

Named Group Based

{:ok, user} = YourApp.User()
{:ok, client} = Exredis.start_link

if Hyde.active?(client, :my_feature, :admins) do
  # Do Feature Code
end

# Turn on a feature for single user
client |> Hyde.activate(:my_feature, :admins)

# Query a feature for single user
client |> Hyde.active?(:my_feature, :admins) 
#true

client |> Hyde.inactive?(:my_feature, :admins) 
#false

TODO