superconfig 2.1.0 → 2.1.1

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: c9e0e414be8780a5a7815b5cdceb25a430f86363bf9120e42b1d3a55ca756f46
4
- data.tar.gz: 0a216ce70e1f2430517dec63f62efc22654c051898837e17979c3f91a6ebe565
3
+ metadata.gz: 19c4f5d2faef5fdb37e7e7d90aaee000304324181ed100ceba65f2d5ca6deae4
4
+ data.tar.gz: 29e04481feccd4677d1d5d460fceb83a48d9e283d32bbadf76e29adf47336cce
5
5
  SHA512:
6
- metadata.gz: aa41c22654cec2830fc13fed09ff67b1db897b554d56109da014ba15152801a599524c88fedb482e4780cad795494ec36f49e39fd4e5b8d3d59e867418fc01a3
7
- data.tar.gz: 2967f86046040444020ef8f04b8fe0161d1f27bf748b8c3c1ac464ebae342031ab1b5562c0194c1d780c4e13f19747c3b7ec2b5a6ae1ff1035d592adbeb2591d
6
+ metadata.gz: 0075c401a0fb1c7735a44538d6544bc17e79fd83e8ad7b068da06a52f0f96cd1eda15a65a4276f22f4711caf3cc41f782f05dd50c768cca7e34379da167d125d
7
+ data.tar.gz: db789b81ef4ebd8f6a0705178208ba88452d477e66dbb44d6c37fed764eaa1584d0a1f8c07cb5c253877cbb7f01bd69aea51d2d0475f3784b43782e28840fe65
@@ -24,9 +24,9 @@ jobs:
24
24
  - Gemfile
25
25
 
26
26
  steps:
27
- - uses: actions/checkout@v2.4.0
27
+ - uses: actions/checkout@v3
28
28
 
29
- - uses: actions/cache@v2
29
+ - uses: actions/cache@v3
30
30
  with:
31
31
  path: vendor/bundle
32
32
  key: >
data/CHANGELOG.md CHANGED
@@ -11,6 +11,10 @@ Prefix your message with one of the following:
11
11
  - [Security] in case of vulnerabilities.
12
12
  -->
13
13
 
14
- ## Unreleased
14
+ ## v2.1.1
15
+
16
+ - [Changed] Ensure bad JSON strings doesn't leak it's contents.
17
+
18
+ ## v2.0.0
15
19
 
16
20
  - Initial release.
data/lib/superconfig.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SuperConfig
4
- VERSION = "2.1.0"
4
+ VERSION = "2.1.1"
5
5
 
6
6
  MissingEnvironmentVariable = Class.new(StandardError)
7
7
  MissingCallable = Class.new(StandardError)
@@ -48,7 +48,7 @@ module SuperConfig
48
48
  define_singleton_method(name) do
49
49
  return default unless @env.key?(env_var)
50
50
 
51
- coerce(type, @env[env_var])
51
+ coerce(env_var, type, @env[env_var])
52
52
  end
53
53
 
54
54
  aliases.each do |alias_name|
@@ -169,41 +169,43 @@ module SuperConfig
169
169
  "#{report.join("\n")}\n"
170
170
  end
171
171
 
172
- private def coerce_to_string(value)
172
+ private def coerce_to_string(_name, value)
173
173
  value
174
174
  end
175
175
 
176
- private def coerce_to_bool(value)
176
+ private def coerce_to_bool(_name, value)
177
177
  BOOL_TRUE.include?(value)
178
178
  end
179
179
 
180
- private def coerce_to_int(value)
180
+ private def coerce_to_int(_name, value)
181
181
  Integer(value) if !BOOL_FALSE.include?(value) && value
182
182
  end
183
183
 
184
- private def coerce_to_float(value)
184
+ private def coerce_to_float(_name, value)
185
185
  Float(value) if value
186
186
  end
187
187
 
188
- private def coerce_to_bigdecimal(value)
188
+ private def coerce_to_bigdecimal(_name, value)
189
189
  BigDecimal(value) if value
190
190
  end
191
191
 
192
- private def coerce_to_symbol(value)
192
+ private def coerce_to_symbol(_name, value)
193
193
  value&.to_sym
194
194
  end
195
195
 
196
- private def coerce_to_array(value, type)
197
- value&.split(/, */)&.map {|v| coerce(type, v) }
196
+ private def coerce_to_array(name, value, type)
197
+ value&.split(/, */)&.map {|v| coerce(name, type, v) }
198
198
  end
199
199
 
200
- private def coerce_to_json(value)
200
+ private def coerce_to_json(name, value)
201
201
  value && JSON.parse(value)
202
+ rescue JSON::ParserError
203
+ raise ArgumentError, "#{name} is not a valid JSON string"
202
204
  end
203
205
 
204
- private def coerce(type, value)
206
+ private def coerce(name, type, value)
205
207
  main_type, sub_type = type
206
- args = [value]
208
+ args = [name, value]
207
209
  args << sub_type if sub_type
208
210
 
209
211
  send("coerce_to_#{main_type}", *args)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: superconfig
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-16 00:00:00.000000000 Z
11
+ date: 2023-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -184,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
184
  - !ruby/object:Gem::Version
185
185
  version: '0'
186
186
  requirements: []
187
- rubygems_version: 3.3.3
187
+ rubygems_version: 3.4.6
188
188
  signing_key:
189
189
  specification_version: 4
190
190
  summary: Access environment variables. Also includes presence validation, type coercion