# ExperimentLight [![Code Climate](https://codeclimate.com/github/Sen-Zhang/experiment_light/badges/gpa.svg)](https://codeclimate.com/github/Sen-Zhang/experiment_light) [![Build Status](https://travis-ci.org/Sen-Zhang/experiment_light.svg)](https://travis-ci.org/Sen-Zhang/experiment_light) Turn features on or off in various rails environments ## Installation Add this line to your application's Gemfile: ```ruby gem 'experiment_light' ``` And then execute: $ bundle Or install it yourself as: $ gem install experiment_light ## Usage ### Basic Run install generator: $ rails generate experiment_light:install A yaml file named `experiment.yml` will be added into `config/` after running install generator, now your can define your experimental features: foo: development: true test: true production: false bar: development: false test: true production: false Now you can use it in models like this: class TestModel < ActiveRecord::Base ... if experiment_on?(:foo) def foo_method ... end end ... end In controllers like this: class TestController < ApplicationController ... def index ... if experiment_on?(:foo) redirect_to :back end ... end ... end And in views like this: <% if experiment_on?(:foo) %>

Experiment foo is on

<% end %> <% if experiment_off?(:bar) %>

Experiment bar is off

<% end %> ### Toggel feature from view Run install generator: $ rails generate experiment_light:install_toggle - A controller file named `experiments_controller.rb` will be added into `app/controllers` - A view template file name 'index.html.erb' will be added into `app/views/experiments` - The following two routes will be added: ```ruby get 'experiments' => 'experiments#index' post 'update_experiment' => 'experiments#update' ``` You may want to customize the newly generated files base on your need. Now you are ready to go to `localhost:3000/experiments` to check out and toggle your features. ## Contributing 1. Fork it ( https://github.com/[my-github-username]/experiment_light/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