Guillaume Dott d66f2c4a5f | ||
---|---|---|
lib | ||
test | ||
.gitignore | ||
Gemfile | ||
LICENSE.txt | ||
README.md | ||
Rakefile | ||
flop.gemspec |
README.md
Flop
Flop is a feature flipper gem for ruby.
Toggle features on and off easily and store feature states in memory or in redis with the different repositories.
Installation
Add this line to your application's Gemfile:
gem 'flop'
And then execute:
$ bundle
Or install it yourself as:
$ gem install flop
Repositories
First, you need to configure where to store everything by setting a repository.
Available repositories are :
Flop::Repository::Memory
Flop::Repository::Redis
Flop::Repository::Yaml
To set the repository, create a new object and affect it to Flop.repo
.
Flop.repo = Flop::Repository::Memory.new
require 'redis'
Flop.repo = Flop::Repository::Redis.new(Redis.new)
Redis
The Redis
repository requires a Redis
connection as its first parameter.
The default namespace can be passed as a second parameter.
The default namespace can be a string, an array or a proc.
Flop::Repository::Redis.new(Redis.new, "flop:namespace")
Flop::Repository::Redis.new(Redis.new, [:flop, :namespace])
Flop::Repository::Redis.new(Redis.new, -> { ENV['NAMESPACE'] })
YAML
The Yaml
repository requires a yaml file as its first parameter.
This repository is read-only so methods like activate
, toggle
, ... can not be used.
Flop::Repository::Yaml.new('my_file.yml')
Features
To access a feature, you can call the Flop[] method or create a new Flop::Feature
object.
Flop[:example_feature] # is the same as
Flop::Feature.new(:example_feature)
Available methods on Flop::Feature
are :
feature.active?
returns true if the feature is activefeature.inactive?
returns true if the feature is inactivefeature.set(boolean)
sets the state of the feature to the passed valuefeature.activate
activates the featurefeature.deactivate
deactivates the featurefeature.toggle
toggles the state of the featurefeature.with { }
executes the block if the feature is activefeature.without { }
executes the block if the feature is inactive
Examples
Flop.repo = Flop::Repository::Memory.new
Flop[:feature].active? # => false
Flop[:feature].toggle # => true
Flop[:feature].with do
# code
end
Contributing
- Fork it ( https://github.com/gdott9/flop/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request