2014-08-14 17:12:22 +02:00
|
|
|
# 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
|
|
|
|
|
2014-08-14 17:43:42 +02:00
|
|
|
### Repositories
|
|
|
|
|
|
|
|
First, you need to configure where to store everything by setting a repository.
|
|
|
|
|
|
|
|
Available repositories are :
|
|
|
|
- `Flop::Repository::Memory`
|
2014-08-14 18:00:15 +02:00
|
|
|
- `Flop::Repository::Redis`
|
2014-08-14 17:43:42 +02:00
|
|
|
|
|
|
|
To set the repository, create a new object and affect it to `Flop.repo`.
|
|
|
|
```ruby
|
|
|
|
Flop.repo = Flop::Repository::Memory.new
|
2014-08-14 18:00:15 +02:00
|
|
|
|
|
|
|
require 'redis'
|
|
|
|
|
|
|
|
Flop.repo = Flop::Repository::Redis.new(Redis.new)
|
2014-08-14 17:43:42 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
### 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
|
|
|
|
```
|
2014-08-14 17:12:22 +02:00
|
|
|
|
|
|
|
## 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
|