flop/README.md

76 lines
1.7 KiB
Markdown

# Flop
A simple ruby feature flipper.
## Installation
Add this line to your application's Gemfile:
gem 'flop'
And then execute:
$ bundle
Or install it yourself as:
$ gem install flop
## Usage
### Repositories
First, you need to configure where to store everything by setting a repository.
Available repositories are :
- `Flop::Repository::Memory`
- `Flop::Repository::Redis`
To set the repository, create a new object and affect it to `Flop.repo`.
```ruby
Flop.repo = Flop::Repository::Memory.new
require 'redis'
Flop.repo = Flop::Repository::Redis.new(Redis.new)
```
### Features
To access a feature, you can call the Flop[] method or create a new `Flop::Feature` object.
```ruby
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 active
- `feature.inactive?` returns true if the feature is inactive
- `feature.set(boolean)` sets the state of the feature to the passed value
- `feature.activate` activates the feature
- `feature.deactivate` deactivates the feature
- `feature.toggle` toggles the state of the feature
- `feature.with { }` executes the block if the feature is active
- `feature.without { }` executes the block if the feature is inactive
## Examples
```ruby
Flop.repo = Flop::Repository::Memory.new
Flop[:feature].active? # => false
Flop[:feature].toggle # => true
Flop[:feature].with do
# code
end
```
## Contributing
1. Fork it ( https://github.com/gdott9/flop/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request