secret_config 0.10.3 → 0.10.4

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
  SHA256:
3
- metadata.gz: 41c6e3154517787c40c77442238b3d4f62d03503924f51db586ff562a0975d2f
4
- data.tar.gz: 985e416b9d9e480c8dc83e5988d896605329a93f5c854d0a05331209fb1e6fd7
3
+ metadata.gz: 1c448ac94d8b53e13027c3b4df10eaea31720ee069f50c3fa6f7feae5743c8b5
4
+ data.tar.gz: c20fb32c6915115055e2cb651efcac8cfc69d1da88c957f9cf539486174e8d14
5
5
  SHA512:
6
- metadata.gz: 417a5673810b55d39c9ae17c144da9528724ebf142a46ccdc5b02abf60a69bc6fe4ed8455007583d4bdada03fd2d27dc6e03207649df42495b84718c7bb84bd0
7
- data.tar.gz: 3adae9bd474b45b0d4cc4b4780b3aaef41cdb5a52ea7dff2f4ea0261d34198f3ac7b8158dabe765b366b6a83d7e6dcc5c1a3fc798f7bec11c2366efa141ce012
6
+ metadata.gz: 12605771be0a30e288d9a4155259207cebf68865cc62b7407bd2174e6303cae095e3ad5b9e50bf02cd7fa9bcce0a3a80454bc2af9629b38316a85e069fa8e7e3
7
+ data.tar.gz: a002a780853f22cc9919da018f7fd54678121f83e1663cf767e150f4cefcf54c6b1d96c5a15601ee688c8c2d062ae9883edafa5070d5faefd234b6f8d913ee2d
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # Secret Config
2
- [![Gem Version](https://img.shields.io/gem/v/secret_config.svg)](https://rubygems.org/gems/secret_config) [![Build Status](https://travis-ci.org/rocketjob/secret_config.svg?branch=master)](https://travis-ci.org/rocketjob/secret_config) [![License](https://img.shields.io/badge/license-Apache%202.0-brightgreen.svg)](http://opensource.org/licenses/Apache-2.0) ![](https://img.shields.io/badge/status-Production%20Ready-blue.svg) [![Gitter chat](https://img.shields.io/badge/IRC%20(gitter)-Support-brightgreen.svg)](https://gitter.im/rocketjob/support)
2
+ [![Gem Version](https://img.shields.io/gem/v/secret_config.svg)](https://rubygems.org/gems/secret_config) [![Build Status](https://github.com/rocketjob/secret_config/workflows/build/badge.svg)](https://github.com/rocketjob/secret_config/actions?query=workflow%3Abuild) [![License](https://img.shields.io/badge/license-Apache%202.0-brightgreen.svg)](http://opensource.org/licenses/Apache-2.0) ![](https://img.shields.io/badge/status-Production%20Ready-blue.svg) [![Gitter chat](https://img.shields.io/badge/IRC%20(gitter)-Support-brightgreen.svg)](https://gitter.im/rocketjob/support)
3
3
 
4
4
  Centralized Configuration and Secrets Management for Ruby and Rails applications.
5
5
 
@@ -98,7 +98,7 @@ module SecretConfig
98
98
  end
99
99
 
100
100
  # Remove keys deleted from the central registry.
101
- (existing_keys - updated_keys).each { |key| provider.delete(key) }
101
+ (existing_keys - updated_keys).each { |key| cache.delete(key) }
102
102
 
103
103
  true
104
104
  end
@@ -17,6 +17,9 @@ require "securerandom"
17
17
  # ${pid} # Process Id for this process.
18
18
  # ${random} # URL safe Random 32 byte value.
19
19
  # ${random:size} # URL safe Random value of `size` bytes.
20
+ # ${select:a,b,c,d} # Randomly select one of the supplied values. A new new value is selected on restart or refresh.
21
+ # # Values are separated by `,` and cannot include `,` in their values.
22
+ # # Values are stripped of leading and trailing spaces.
20
23
  module SecretConfig
21
24
  class SettingInterpolator < StringInterpolator
22
25
  def date(format = "%Y%m%d")
@@ -48,5 +51,14 @@ module SecretConfig
48
51
  def random(size = 32)
49
52
  SecureRandom.urlsafe_base64(size)
50
53
  end
54
+
55
+ # Empty values return nil which removes the key entirely from the config
56
+ def select(*values)
57
+ if values.size < 2
58
+ raise(ConfigurationError, "Must supply at least 2 options when using select: #{values.inspect}")
59
+ end
60
+
61
+ values[SecureRandom.random_number(values.count)]
62
+ end
51
63
  end
52
64
  end
@@ -1,3 +1,3 @@
1
1
  module SecretConfig
2
- VERSION = "0.10.3".freeze
2
+ VERSION = "0.10.4".freeze
3
3
  end
@@ -154,6 +154,28 @@ module SecretConfig
154
154
  end
155
155
  end
156
156
  end
157
+
158
+ describe "#select" do
159
+ it "randomly selects one of the supplied values" do
160
+ string = "${select:one, two,three}"
161
+ actual = interpolator.parse(string)
162
+ assert %w[one two three].include?(actual), actual
163
+ end
164
+
165
+ it "fails when less than 2 options are supplied" do
166
+ string = "${select:one}"
167
+ assert_raises ConfigurationError do
168
+ interpolator.parse(string)
169
+ end
170
+ end
171
+
172
+ it "fails when no options are supplied" do
173
+ string = "${select}"
174
+ assert_raises ConfigurationError do
175
+ interpolator.parse(string)
176
+ end
177
+ end
178
+ end
157
179
  end
158
180
  end
159
181
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: secret_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.3
4
+ version: 0.10.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-24 00:00:00.000000000 Z
11
+ date: 2021-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -26,7 +26,6 @@ dependencies:
26
26
  version: '0'
27
27
  description:
28
28
  email:
29
- - reidmo@gmail.com
30
29
  executables:
31
30
  - secret-config
32
31
  extensions: []
@@ -59,7 +58,7 @@ files:
59
58
  - test/setting_interpolator_test.rb
60
59
  - test/test_helper.rb
61
60
  - test/utils_test.rb
62
- homepage: https://github.com/rocketjob/secret_config
61
+ homepage: https://config.rocketjob.io
63
62
  licenses:
64
63
  - Apache-2.0
65
64
  metadata: {}
@@ -78,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
77
  - !ruby/object:Gem::Version
79
78
  version: '0'
80
79
  requirements: []
81
- rubygems_version: 3.2.3
80
+ rubygems_version: 3.2.22
82
81
  signing_key:
83
82
  specification_version: 4
84
83
  summary: Centralized Configuration and Secrets Management for Ruby and Rails applications.