can-do 1.1.1 → 1.1.2

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