rcurtain 0.0.6 → 0.0.7

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: 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