can-do 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/can_do.gemspec +1 -1
  3. data/lib/can_do.rb +19 -3
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4a7ac4a59d361afbe87619fef4daa1a38234f6fb
4
- data.tar.gz: f9dd142354cbd01504e499ce1cb7fade0d1eb27c
3
+ metadata.gz: d8415a892ab192d6159d8cdb9b43b86a5a3be28b
4
+ data.tar.gz: 0c80da36f64e39fa2df98d5de7b70e63cd9af978
5
5
  SHA512:
6
- metadata.gz: 6a81f0a86db59e4d868bf81d7e1e284efc2bf553e4f9f903f198d1ed3e59905dc8ad126bfaaf5a2bddfce5c53fea6f843b9c590ce1315d6464957600a1093333
7
- data.tar.gz: f79d6e28b844ce332240ecc3ec2aae2a0bfedb4d77ef5ffde4bc4745598d29ba367773e46109d2afc5371d54a9ea2f08ca176ede200df52833ee5886d5dab938
6
+ metadata.gz: bca3eff2ea2893e4f89804a1cf81a72e19fe0ed7c5d09e908a552898311f5a3e91e301add30136c80e0ad7c5854aa88d80e157102465d9a28da1ec075daaa51d
7
+ data.tar.gz: 51b98991a41e8616ac37661aafba913d7198440f758abc2ba0beed09ed73b243a97ba6c2971b587aa31b9180e6fad65b72cce46fe288f2eeb9d408821b517453
data/can_do.gemspec CHANGED
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "can-do"
6
- spec.version = "1.1.1"
6
+ spec.version = "1.1.2"
7
7
  spec.authors = ["Blacklane"]
8
8
 
9
9
  spec.summary = %q{Simple feature flags.}
data/lib/can_do.rb CHANGED
@@ -46,8 +46,7 @@ class CanDo
46
46
 
47
47
  def read(feature)
48
48
  name = feature.to_s
49
- shared_feature = pool.with { |redis| redis.get(redis_key(name)) }
50
-
49
+ shared_feature = redis_read(name)
51
50
  fallback_value = fallback.fetch(name, false)
52
51
 
53
52
  return !!(shared_feature =~ THE_TRUTH) unless shared_feature.nil?
@@ -70,6 +69,10 @@ class CanDo
70
69
  []
71
70
  end
72
71
 
72
+ def redis_read(name)
73
+ pool.with { |redis| redis.get(redis_key(name)) }
74
+ end
75
+
73
76
  private
74
77
 
75
78
  def redis_key(name)
@@ -81,13 +84,26 @@ class CanDo
81
84
  end
82
85
 
83
86
  def fallback
84
- @fallback ||= load_yaml_features
87
+ @fallback ||= init_fallback
85
88
  end
86
89
 
87
90
  def yaml_file_path
88
91
  File.expand_path("config/features.yml", Dir.pwd)
89
92
  end
90
93
 
94
+ def init_fallback
95
+ features = load_yaml_features
96
+
97
+ features.each do |key, val|
98
+ begin
99
+ write(key, redis_read(key) || val)
100
+ rescue *REDIS_ERRORS
101
+ end
102
+ end
103
+
104
+ features
105
+ end
106
+
91
107
  def load_yaml_features
92
108
  return {} unless File.exist?(yaml_file_path)
93
109
  data = YAML.safe_load(File.read(yaml_file_path))
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: can-do
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blacklane
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-13 00:00:00.000000000 Z
11
+ date: 2017-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis