flippercloud / flipper

🐬 Beautiful, performant feature flags for Ruby.
https://www.flippercloud.io/docs
MIT License
3.73k stars 419 forks source link
api dalli feature feature-flag feature-flagging feature-flags feature-toggle feature-toggles features flipper http memcached mongo mysql postgres rails redis rollout ruby

Flipper Mark

Website | Documentation | Examples | Chat | Twitter | Ruby.social

Flipper

Beautiful, performant feature flags for Ruby and Rails.

Flipper gives you control over who has access to features in your app.

Control your software — don't let it control you.

Installation

Add this line to your application's Gemfile:

gem 'flipper'

You'll also want to pick a storage adapter, for example:

gem 'flipper-active_record'

And then execute:

$ bundle

Or install it yourself with:

$ gem install flipper

Subscribe & Ship

💌  Subscribe - we'll send you short and sweet emails when we release new versions (examples).

Getting Started

Use Flipper#enabled? in your app to check if a feature is enabled.

# check if search is enabled
if Flipper.enabled?(:search, current_user)
  puts 'Search away!'
else
  puts 'No search for you!'
end

All features are disabled by default, so you'll need to explicitly enable them.

# Enable a feature for everyone
Flipper.enable :search

# Enable a feature for a specific actor
Flipper.enable_actor :search, current_user

# Enable a feature for a group of actors
Flipper.enable_group :search, :admin

# Enable a feature for a percentage of actors
Flipper.enable_percentage_of_actors :search, 2

Read more about getting started with Flipper and enabling features.

Flipper Cloud

Like Flipper and want more? Check out Flipper Cloud, which comes with:

Flipper Cloud Screenshot

Cloud is super simple to integrate with Rails (demo app), Sinatra or any other framework.

We also have a free plan that you can use forever.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Run the tests (bundle exec rake). Check out Docker-Compose if you need help getting all the adapters running.
  4. Commit your changes (git commit -am 'Added some feature')
  5. Push to the branch (git push origin my-new-feature)
  6. Create new Pull Request

Releasing

  1. Update the version to be whatever it should be and commit.
  2. script/release
  3. Create a new GitHub Release

Brought To You By

pic @mention area
@jnunemaker @jnunemaker most things
@bkeepers @bkeepers most things
@dpep @dpep tbd
@alexwheeler @alexwheeler api
@thetimbanks @thetimbanks ui
@lazebny @lazebny docker
@pagertree @pagertree sponsor
@kdaigle @kdaigle sponsor