feature_flagger 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d020c60e2aeb48cafe4af3978c8ce8f54a611b2
4
- data.tar.gz: 5c9dbb51e79a91c22bfbf153c73ede5d2a891139
3
+ metadata.gz: d29e1d31d6e0908bf08af3e04cb7c5b6bc0b540a
4
+ data.tar.gz: 7bf7063dd406d12d78ee8fdd01d4fa3dfcf247c6
5
5
  SHA512:
6
- metadata.gz: 58a32906d4c73dc4fc654cbc145eda3a766c871f591c7745403c7ced22e3abf289afe846f5fb355fcdbd3ae5f1c6fd5eec6a96c05204af926c1a10ba3b8d0ce9
7
- data.tar.gz: 851bb978b64ccc502dc999055b824eee2fa75ff1c3d58e33af01bde6e20e4f0dcbcb4a75aa273066405feeda9e9b125f6537a244e2754bad8c17f6354d9b1454
6
+ metadata.gz: 3f82ebd10dca01517e578cc8d079e70510a3e14aec9fabcc5d839e9e35493e2f5cf7eb7a1a9f40902f0d0d50c81f9af308a193cc831c945b2382916beb0b11e4
7
+ data.tar.gz: a32b48b06e4fd065ba013feb7cc9d239ef31824d1f6b919c66eb82ec3dc71e2fa2b499ad03182846aa6ad2a0a568899ec05994947c6af63b1be7aa78edc997c0
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
+ [![Build Status](https://travis-ci.org/ResultadosDigitais/feature_flagger.svg?branch=master)](https://travis-ci.org/ResultadosDigitais/feature_flagger) [![Code Climate](https://codeclimate.com/github/ResultadosDigitais/feature_flagger/badges/gpa.svg)](https://codeclimate.com/github/ResultadosDigitais/feature_flagger) [![Issue Count](https://codeclimate.com/github/ResultadosDigitais/feature_flagger/badges/issue_count.svg)](https://codeclimate.com/github/ResultadosDigitais/feature_flagger)
2
+
1
3
  # FeatureFlagger
2
4
 
3
- Partial release your features.
5
+ Partially release your features.
4
6
 
5
7
  ## Installation
6
8
 
@@ -21,10 +23,17 @@ Or install it yourself as:
21
23
 
22
24
  ## Configuration
23
25
 
24
- 1. Configure redis by adding `config/initializers/feature_flagger.rb`:
26
+ By default, feature_flagger uses the REDIS_URL env var to setup it's storage.
27
+ You can configure this by using `configure` like such:
28
+
29
+ 1. In a initializer file (e.g. `config/initializers/feature_flagger.rb`):
25
30
  ```ruby
31
+ require 'redis-namespace'
32
+ require 'feature_flagger'
33
+
26
34
  FeatureFlagger.configure do |config|
27
- config.storage.redis = $redis
35
+ namespaced = ::Redis::Namespace.new("feature_flagger", redis: $redis)
36
+ config.storage = FeatureFlagger::Storage::Redis.new(namespaced)
28
37
  end
29
38
  ```
30
39
 
@@ -1,5 +1,4 @@
1
1
  require 'yaml'
2
- require 'redis-namespace'
3
2
 
4
3
  require 'feature_flagger/version'
5
4
  require 'feature_flagger/storage/redis'
@@ -37,7 +36,7 @@ module FeatureFlagger
37
36
 
38
37
  def set_config
39
38
  @@config ||= {}
40
- @@config[:storage] ||= Storage::Redis.new
39
+ @@config[:storage] ||= default_client
41
40
 
42
41
  # TODO: Provide a Rake to generate initial YAML file
43
42
  # for new projects.
@@ -50,5 +49,9 @@ module FeatureFlagger
50
49
  @@config[:info] ||= YAML.load_file(file_path)
51
50
  end
52
51
  end
52
+
53
+ def default_client
54
+ Storage::Redis.default_client
55
+ end
53
56
  end
54
57
  end
@@ -1,31 +1,36 @@
1
+ require 'redis'
2
+ require 'redis-namespace'
3
+
1
4
  module FeatureFlagger
2
5
  module Storage
3
6
  class Redis
7
+
4
8
  DEFAULT_NAMESPACE = :feature_flagger
5
9
 
6
- attr_writer :redis
10
+ def initialize(redis)
11
+ @redis = redis
12
+ end
7
13
 
8
- def redis
9
- @redis ||= begin
10
- client = ::Redis.new(url: ENV['REDIS_URL'])
11
- ::Redis::Namespace.new(DEFAULT_NAMESPACE, redis: client)
12
- end
14
+ def self.default_client
15
+ redis = ::Redis.new(url: ENV['REDIS_URL'])
16
+ ns = ::Redis::Namespace.new(DEFAULT_NAMESPACE, :redis => redis)
17
+ new(ns)
13
18
  end
14
19
 
15
20
  def has_value?(key, value)
16
- redis.sismember(key, value)
21
+ @redis.sismember(key, value)
17
22
  end
18
23
 
19
24
  def add(key, value)
20
- redis.sadd(key, value)
25
+ @redis.sadd(key, value)
21
26
  end
22
27
 
23
28
  def remove(key, value)
24
- redis.srem(key, value)
29
+ @redis.srem(key, value)
25
30
  end
26
31
 
27
32
  def all_values(key)
28
- redis.smembers(key)
33
+ @redis.smembers(key)
29
34
  end
30
35
  end
31
36
  end
@@ -1,3 +1,3 @@
1
1
  module FeatureFlagger
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,30 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feature_flagger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Sousa
8
8
  - Geison Biazus
9
9
  autorequire:
10
- bindir: exe
10
+ bindir: bin
11
11
  cert_chain: []
12
- date: 2016-08-31 00:00:00.000000000 Z
12
+ date: 2016-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: redis
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '3.2'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '3.2'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: redis-namespace
16
30
  requirement: !ruby/object:Gem::Requirement
17
31
  requirements:
18
- - - ">="
32
+ - - "~>"
19
33
  - !ruby/object:Gem::Version
20
- version: '0'
34
+ version: '1.3'
21
35
  type: :runtime
22
36
  prerelease: false
23
37
  version_requirements: !ruby/object:Gem::Requirement
24
38
  requirements:
25
- - - ">="
39
+ - - "~>"
26
40
  - !ruby/object:Gem::Version
27
- version: '0'
41
+ version: '1.3'
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: bundler
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -67,6 +81,20 @@ dependencies:
67
81
  - - "~>"
68
82
  - !ruby/object:Gem::Version
69
83
  version: '3.0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: fakeredis
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
70
98
  description: Management tool to make it easier rollouting features to customers.
71
99
  email:
72
100
  - nandosousafr@gmail.com
@@ -75,16 +103,8 @@ executables: []
75
103
  extensions: []
76
104
  extra_rdoc_files: []
77
105
  files:
78
- - ".gitignore"
79
- - ".rspec"
80
- - ".travis.yml"
81
- - Gemfile
82
106
  - MIT-LICENSE
83
107
  - README.md
84
- - Rakefile
85
- - bin/console
86
- - bin/setup
87
- - feature_flagger.gemspec
88
108
  - lib/feature_flagger.rb
89
109
  - lib/feature_flagger/control.rb
90
110
  - lib/feature_flagger/feature.rb
@@ -111,8 +131,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
131
  version: '0'
112
132
  requirements: []
113
133
  rubyforge_project:
114
- rubygems_version: 2.6.6
134
+ rubygems_version: 2.4.3
115
135
  signing_key:
116
136
  specification_version: 4
117
137
  summary: Partial release your features.
118
138
  test_files: []
139
+ has_rdoc:
data/.gitignore DELETED
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --format documentation
2
- --color
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.1.5
5
- before_install: gem install bundler -v 1.12.5
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in rollout.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "rollout"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
@@ -1,26 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'feature_flagger/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "feature_flagger"
8
- spec.version = FeatureFlagger::VERSION
9
- spec.authors = ["Nando Sousa", "Geison Biazus"]
10
- spec.email = ["nandosousafr@gmail.com", "geisonbiazus@gmail.com"]
11
- spec.licenses = ['MIT']
12
-
13
- spec.summary = %q{Partial release your features.}
14
- spec.description = %q{Management tool to make it easier rollouting features to customers.}
15
- spec.homepage = "http://github.com/ResultadosDigitais/feature_flagger"
16
-
17
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.bindir = "exe"
19
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
- spec.require_paths = ["lib"]
21
-
22
- spec.add_dependency 'redis-namespace'
23
- spec.add_development_dependency "bundler", "~> 1.12"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec", "~> 3.0"
26
- end