| 
									
										
										
										
											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` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | To set the repository, create a new object and affect it to `Flop.repo`. | 
					
						
							|  |  |  | ```ruby | 
					
						
							|  |  |  | Flop.repo = Flop::Repository::Memory.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 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											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 |