Sha256: 95e81893c3ae6c7e9db31ebc0f1fbb3670576dc22145961b07b80583dab6ab22

Contents?: true

Size: 1.97 KB

Versions: 1

Compression:

Stored size: 1.97 KB

Contents

# Flag
[![Build Status](https://travis-ci.org/elcuervo/flag.svg?branch=master)](https://travis-ci.org/elcuervo/flag)

Simple feature flags for any app

## Install

```
gem install flag
```

## Initialize

`Flag` uses `Redic.new` if no other conenction is supplied

```ruby
Flag.store = Redic.new(ENV["OTHER_REDIS"]) # <3 Redic
```

## Basic usage

```ruby
if Flag(:new_design).on?
  # Shiny new design
else
  # Marquee and blink everywhere
end
```

If you enable (`on!`) with `Integer`, `Fixnum` or `String` they will be treated
as ids of your application, in the other hand if you use `Symbol` it will be
treated as a `Group`.

```ruby
Flag(:something).on!(1)
Flag(:something).on!("uuid")

Flag(:something).on!(:group)
```

## Quiet mode

Sometimes you don't want to have your server down when doing flag checks:

```ruby
Flag.quiet!
# Now everything fails silently

Flag.store = Redic.new("redis://localhost:5433/123")
Flag(:quack).on!
```

## Enable/Check feature flags

### Ids

```ruby
Flag(:new_buttons).on!  # Enabled for everyone
Flag(:new_buttons).off! # Disabled for everyone

Flag(:new_buttons).on!(1) # Enabled for id 1
Flag(:new_buttons).on?(1) #=> true

Flag(:new_buttons).on!("AnyRandomIdentification") # Use what you want as an id
Flag(:new_buttons).on?("AnyRandomIdentification") #=> true
```

### Groups

```ruby
Flag.group[:staff] = lambda { |id| User.find(id).staff? }

Flag(:new_scary_feature).on!(:staff)  # This will run a block to check if it's valid
Flag(:new_scary_feature).on?(user.id) #=> true
```

### Percentages

```ruby
Flag(:testing).on!("33%")
```

## Info

```ruby
Flag.enabled  # Shows you an array of the currently activated features
              #=> [:landing_page]

Flag.features # All the features, even the off ones

Flag.groups # The currently defined groups
            #=> [:staff, :beta_testers]

Flag(:holidays).activated # A hash with info on who has this feature active
                          #=> {:percentage => 100, :users => ["1"], :groups => [:staff] }
```

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
flag-1.0.0 README.md