rcurtain 0.0.6 → 0.0.7
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 +4 -4
- data/Gemfile.lock +6 -3
- data/lib/rcurtain/curtain.rb +16 -8
- data/rcurtain-0.0.6.gem +0 -0
- data/rcurtain.gemspec +2 -1
- data/spec/lib/curtain_spec.rb +4 -3
- metadata +17 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8436c1d1dcc6db394c86cb23f35bcc81a751a733
|
|
4
|
+
data.tar.gz: d1dab0bfc9583de833028b1f1d68d6825084fe81
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f6800bc06b564ec03b2ce45017de7dc90153354431e4c4cbbd58e9002e54798b22f74ea13ae353a32cb48c8ee1180ca1e331c62f5868c6066f049713fe5a179b
|
|
7
|
+
data.tar.gz: c7f45e084617cf7402e4792e7ea7ade49cce134ce735edd520f88e4be4871e8b9584e08873afe766a43f5aeb3305f39544119609ce949fc3ffc2474377b7446f
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
rcurtain (0.0.
|
|
4
|
+
rcurtain (0.0.6)
|
|
5
5
|
hiredis
|
|
6
6
|
redis (~> 3.2)
|
|
7
7
|
|
|
@@ -9,8 +9,10 @@ GEM
|
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
11
|
diff-lcs (1.2.5)
|
|
12
|
+
fakeredis (0.7.0)
|
|
13
|
+
redis (>= 3.2, < 5.0)
|
|
12
14
|
hiredis (0.6.1)
|
|
13
|
-
redis (3.3.
|
|
15
|
+
redis (3.3.5)
|
|
14
16
|
rspec (3.4.0)
|
|
15
17
|
rspec-core (~> 3.4.0)
|
|
16
18
|
rspec-expectations (~> 3.4.0)
|
|
@@ -29,8 +31,9 @@ PLATFORMS
|
|
|
29
31
|
ruby
|
|
30
32
|
|
|
31
33
|
DEPENDENCIES
|
|
34
|
+
fakeredis
|
|
32
35
|
rcurtain!
|
|
33
36
|
rspec
|
|
34
37
|
|
|
35
38
|
BUNDLED WITH
|
|
36
|
-
1.
|
|
39
|
+
1.16.0
|
data/lib/rcurtain/curtain.rb
CHANGED
|
@@ -10,12 +10,8 @@ module Rcurtain
|
|
|
10
10
|
@redis = Redis.new(:url => Rcurtain.configuration.url)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
def opened?
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return (compare_percentage?(feat.percentage)) || (users.any? { |user| feat.users.include?(user)}) unless users.empty?
|
|
17
|
-
|
|
18
|
-
compare_percentage?(feat.percentage)
|
|
13
|
+
def opened?(feature, users = [])
|
|
14
|
+
compare_percentage?(percentage(feature)) || users_enabled?(feature, users)
|
|
19
15
|
rescue Redis::CannotConnectError
|
|
20
16
|
return Rcurtain.configuration.default_response
|
|
21
17
|
end
|
|
@@ -23,7 +19,7 @@ module Rcurtain
|
|
|
23
19
|
def get_users(feature)
|
|
24
20
|
get_feature(feature).users
|
|
25
21
|
rescue Redis::CannotConnectError
|
|
26
|
-
Rcurtain.configuration.default_response
|
|
22
|
+
Rcurtain.configuration.default_response
|
|
27
23
|
end
|
|
28
24
|
|
|
29
25
|
private
|
|
@@ -35,10 +31,22 @@ module Rcurtain
|
|
|
35
31
|
return Feature.new(name, percentage, users)
|
|
36
32
|
end
|
|
37
33
|
|
|
34
|
+
def users_enabled?(feature_name, users = [])
|
|
35
|
+
return false if invalid_users?(users)
|
|
36
|
+
users.all? { |user| redis.sismember("feature:#{feature_name}:users", user) }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def invalid_users?(users)
|
|
40
|
+
users.nil? || users.empty?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def percentage(feature_name)
|
|
44
|
+
redis.get("feature:#{feature_name}:percentage") || 0
|
|
45
|
+
end
|
|
46
|
+
|
|
38
47
|
def compare_percentage? (percentage)
|
|
39
48
|
rnd = Random.new
|
|
40
49
|
rnd.rand(1..100) <= percentage.to_f
|
|
41
50
|
end
|
|
42
|
-
|
|
43
51
|
end
|
|
44
52
|
end
|
data/rcurtain-0.0.6.gem
ADDED
|
Binary file
|
data/rcurtain.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
s.name = 'rcurtain'
|
|
3
|
-
s.version = '0.0.
|
|
3
|
+
s.version = '0.0.7'
|
|
4
4
|
s.date = '2017-07-03'
|
|
5
5
|
s.summary = "RCurtain"
|
|
6
6
|
s.description = "Open the curtain and see if your feature is enabled"
|
|
@@ -15,5 +15,6 @@ Gem::Specification.new do |s|
|
|
|
15
15
|
|
|
16
16
|
s.add_runtime_dependency "hiredis"
|
|
17
17
|
s.add_runtime_dependency "redis", "~>3.2"
|
|
18
|
+
s.add_development_dependency 'fakeredis'
|
|
18
19
|
s.add_development_dependency "rspec"
|
|
19
20
|
end
|
data/spec/lib/curtain_spec.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require "spec_helper"
|
|
2
|
+
require 'fakeredis/rspec'
|
|
2
3
|
|
|
3
4
|
describe Rcurtain do
|
|
4
5
|
|
|
@@ -15,7 +16,7 @@ describe Rcurtain do
|
|
|
15
16
|
context "when 100%" do
|
|
16
17
|
before do
|
|
17
18
|
allow_any_instance_of(Redis).to receive(:get).and_return(100)
|
|
18
|
-
allow_any_instance_of(Redis).to receive(:
|
|
19
|
+
allow_any_instance_of(Redis).to receive(:sismember).and_return(false)
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
it { expect(rcurtain.opened? "feature").to be true }
|
|
@@ -24,7 +25,7 @@ describe Rcurtain do
|
|
|
24
25
|
context "when user exists" do
|
|
25
26
|
before do
|
|
26
27
|
allow_any_instance_of(Redis).to receive(:get).and_return(0)
|
|
27
|
-
allow_any_instance_of(Redis).to receive(:
|
|
28
|
+
allow_any_instance_of(Redis).to receive(:sismember).and_return(true)
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
it { expect(rcurtain.opened?("feature", ['MPA-123'])).to be true }
|
|
@@ -77,4 +78,4 @@ describe Rcurtain do
|
|
|
77
78
|
it { expect(rcurtain.get_users("feature")).to eq ['123', '321']}
|
|
78
79
|
end
|
|
79
80
|
|
|
80
|
-
end
|
|
81
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rcurtain
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Danillo Souza
|
|
@@ -40,6 +40,20 @@ dependencies:
|
|
|
40
40
|
- - "~>"
|
|
41
41
|
- !ruby/object:Gem::Version
|
|
42
42
|
version: '3.2'
|
|
43
|
+
- !ruby/object:Gem::Dependency
|
|
44
|
+
name: fakeredis
|
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
|
46
|
+
requirements:
|
|
47
|
+
- - ">="
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: '0'
|
|
50
|
+
type: :development
|
|
51
|
+
prerelease: false
|
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
53
|
+
requirements:
|
|
54
|
+
- - ">="
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: '0'
|
|
43
57
|
- !ruby/object:Gem::Dependency
|
|
44
58
|
name: rspec
|
|
45
59
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -70,6 +84,7 @@ files:
|
|
|
70
84
|
- lib/rcurtain/configuration.rb
|
|
71
85
|
- lib/rcurtain/curtain.rb
|
|
72
86
|
- lib/rcurtain/feature.rb
|
|
87
|
+
- rcurtain-0.0.6.gem
|
|
73
88
|
- rcurtain.gemspec
|
|
74
89
|
- spec/lib/configuration_spec.rb
|
|
75
90
|
- spec/lib/curtain_spec.rb
|
|
@@ -94,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
94
109
|
version: '0'
|
|
95
110
|
requirements: []
|
|
96
111
|
rubyforge_project:
|
|
97
|
-
rubygems_version: 2.6.
|
|
112
|
+
rubygems_version: 2.6.14
|
|
98
113
|
signing_key:
|
|
99
114
|
specification_version: 4
|
|
100
115
|
summary: RCurtain
|