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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0d1c0160c429935d3c5914e8c57a6b6805e3ccf
4
- data.tar.gz: d84a09c17059baf9415911910cb94ff6b66e5e15
3
+ metadata.gz: 8436c1d1dcc6db394c86cb23f35bcc81a751a733
4
+ data.tar.gz: d1dab0bfc9583de833028b1f1d68d6825084fe81
5
5
  SHA512:
6
- metadata.gz: e9f0581952fa609e43d3af905752976677cc2783a5cf1c1c5f42a03f6d3f6635d1c4720943daa686c46e4de520ba85f08ffad307c277838fa58b6f4e99d4b207
7
- data.tar.gz: 5e763482a914a03bcffa5c321ec97399033a44486f8c2ad8f26e4dfae69f32efbe0fdf4e2d982104a856659bb9082009fc200741b3986c6d3aba70316bbbf39e
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)
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.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.12.3
39
+ 1.16.0
@@ -10,12 +10,8 @@ module Rcurtain
10
10
  @redis = Redis.new(:url => Rcurtain.configuration.url)
11
11
  end
12
12
 
13
- def opened? (feature, users = [])
14
- feat = get_feature(feature)
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
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.6'
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
@@ -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(:smembers).and_return(nil)
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(:smembers).and_return(['MPA-123'])
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.6
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.11
112
+ rubygems_version: 2.6.14
98
113
  signing_key:
99
114
  specification_version: 4
100
115
  summary: RCurtain