Skip to content

EasyPost/toggles

Repository files navigation

Toggles

Gem Version CI

YAML backed feature toggles

Installation

Add the following to your Gemfile:

gem "toggles"

and run bundle install from your shell.

To install the gem manually from your shell, run:

gem install toggles

Configuration

Configure toggles:

Toggles.configure do |config|
  config.features_dir = "features"
end

You can now express conditional logic within features_dir. The structure of the features_dir determines the structure of the classes within the Feature module. For example if the features_dir has the structure:

features
├── thing
|   ├── one.yml
|   └── two.yml
└── test.yml

You can call the Toggles.init method to force re-parsing the configuration and re-initializing all Features structures at any time. The Toggles.reinit_if_necessary method is a convenience helper which will only re-initialize of the top-level features directory has changed. Note that, in general, this will only detect changes if you use a system where you swap out the entire features directory on changes and do not edit individual files within the directory.

Usage

Create a file in features_dir:

user:
  id:
    in:
      - 12345
      - 54321

Check if the feature is enabled or disabled:

Feature.enabled?(:new_feature, :available_for_presentation, user: OpenStruct.new(id: 12345)) # true
Feature.enabled?(:new_feature, :available_for_presentation, user: OpenStruct.new(id: 54321)) # true
Feature.enabled?(:new_feature, :available_for_presentation, user: OpenStruct.new(id: 7)) # false

Feature.disabled?(:new_feature, :available_for_presentation, user: OpenStruct.new(id: 12345)) # false
Feature.disabled?(:new_feature, :available_for_presentation, user: OpenStruct.new(id: 54321)) # false
Feature.disabled?(:new_feature, :available_for_presentation, user: OpenStruct.new(id: 7)) # true

License

This project is licensed under the ISC License, the contents of which can be found at LICENSE.txt.

About

YAML backed feature toggles

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 5