feature_flagger 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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