prefab-cloud-ruby 1.4.3 → 1.4.5

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: ba7ffe3b2a36411bb03bf96ba0c00d7155cd8d9281ebb6b8ee7463d05f8c3e86
4
- data.tar.gz: 4b2a90345f8383fecc38ec50399b3ddb59c08adf7a480e3de4a50c05e029b85f
3
+ metadata.gz: 99c0376c6062b2d2ae5c51c5f5cfd15841255e706946e01558cb0dde9e7a4672
4
+ data.tar.gz: 699a13518c92d9c8fcc4f45b8c501b4d96836c49353c762fb50f7f4410546287
5
5
  SHA512:
6
- metadata.gz: a4600a4dd4016ffa2041489776a748fc8cd2678401a0039e1f321b3e6a3ff83492cb78224503ff0feb35ad93762ee2078d0cd3c0788590b668ad317b4b597b5b
7
- data.tar.gz: c203ac482b994da015cb49114dafd795f9b8795d5308ad45beb9c81004a09da7706e36d9fb65f2c351477f08dcf652f4e4c75444edc5914cbb4c21894eb7b830
6
+ metadata.gz: c598fd1f773d2a846b78b06375e10b19053685a7b0a42fc1324a7e129ec27d5ab5494b795ceed32856144e58395f7414ae6540ff704ef1cb137f07f62ab5cfde
7
+ data.tar.gz: 4d576e90e3823359b81211b70f70b566c5fe1489314733d0ebd0ed6b9af966299111d79f1eb38a5ce019153ff9241e3d5f86440031b30aace7187c7c63194c56
@@ -41,3 +41,6 @@ jobs:
41
41
  run: bundle exec rake
42
42
  env:
43
43
  PREFAB_INTEGRATION_TEST_API_KEY: ${{ secrets.PREFAB_INTEGRATION_TEST_API_KEY }}
44
+ PREFAB_INTEGRATION_TEST_ENCRYPTION_KEY: ${{ secrets.PREFAB_INTEGRATION_TEST_ENCRYPTION_KEY }}
45
+ NOT_A_NUMBER: "abcd"
46
+ IS_A_NUMBER: "1234"
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.4.5 - 2024-01-31
4
+
5
+ - Refactor out a `should_log?` method (#170)
6
+
7
+ ## 1.4.4 - 2024-01-26
8
+
9
+ - Raise when ENV var is missing
10
+
3
11
  ## 1.4.3 - 2024-01-17
4
12
 
5
13
  - Updated proto definition file
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.3
1
+ 1.4.5
@@ -68,8 +68,7 @@ module Prefab
68
68
  if :ENV_VAR == config_value.provided.source
69
69
  raw = ENV[config_value.provided.lookup]
70
70
  if raw.nil?
71
- LOG.warn "ENV Variable #{config_value.provided.lookup} not found. Using empty string."
72
- new(Prefab::ConfigValueWrapper.wrap(""), resolver)
71
+ raise Prefab::Errors::MissingEnvVarError.new("Missing environment variable #{config_value.provided.lookup}")
73
72
  else
74
73
  coerced = coerce_into_type(raw, config, config_value.provided.lookup)
75
74
  new(Prefab::ConfigValueWrapper.wrap(coerced, confidential: config_value.confidential), resolver)
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Prefab
4
+ module Errors
5
+ class MissingEnvVarError < Prefab::Error
6
+ def initialize(message)
7
+ super(message)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -75,9 +75,9 @@ module Prefab
75
75
 
76
76
  def log(message, path, progname, severity, log_context = {})
77
77
  severity ||= ::Logger::UNKNOWN
78
- @log_path_aggregator&.push(path, severity)
79
78
 
80
- return true if @logdev.nil? || severity < level_of(path) || @silences[local_log_id]
79
+ return true if !should_log? severity, path
80
+ return true if @logdev.nil? || @silences[local_log_id]
81
81
 
82
82
  progname = @progname if progname.nil?
83
83
 
@@ -96,6 +96,11 @@ module Prefab
96
96
  true
97
97
  end
98
98
 
99
+ def should_log?(severity, path)
100
+ @log_path_aggregator&.push(path, severity)
101
+ severity >= level_of(path)
102
+ end
103
+
99
104
  def debug(progname = nil, **log_context, &block)
100
105
  add_internal(DEBUG, nil, progname, caller_locations(1, 1)[0], log_context, &block)
101
106
  end
@@ -65,7 +65,11 @@ module Prefab
65
65
  if v.nil?
66
66
  elements << 'tombstone'
67
67
  else
68
- value = @resolver.evaluate(v[:config])&.reportable_value
68
+ value = begin
69
+ @resolver.evaluate(v[:config])&.reportable_value
70
+ rescue StandardError => e
71
+ "ERROR EVALUATING: #{e.class} #{e.message}"
72
+ end
69
73
  elements << value.to_s.slice(0..34).ljust(35)
70
74
  elements << value.class.to_s.slice(0..6).ljust(7)
71
75
  elements << "Match: #{v[:match]}".slice(0..29).ljust(30)
@@ -20,6 +20,7 @@ require 'prefab/errors/initialization_timeout_error'
20
20
  require 'prefab/errors/invalid_api_key_error'
21
21
  require 'prefab/errors/missing_default_error'
22
22
  require 'prefab/errors/env_var_parse_error'
23
+ require 'prefab/errors/missing_env_var_error'
23
24
  require 'prefab/errors/uninitialized_error'
24
25
  require 'prefab/options'
25
26
  require 'prefab/static_logger'
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: prefab-cloud-ruby 1.4.3 ruby lib
5
+ # stub: prefab-cloud-ruby 1.4.5 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "prefab-cloud-ruby".freeze
9
- s.version = "1.4.3"
9
+ s.version = "1.4.5"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Jeff Dwyer".freeze]
14
- s.date = "2024-01-17"
14
+ s.date = "2024-01-31"
15
15
  s.description = "Feature Flags, Live Config, and Dynamic Log Levels as a service".freeze
16
16
  s.email = "jdwyer@prefab.cloud".freeze
17
17
  s.executables = ["console".freeze]
@@ -54,6 +54,7 @@ Gem::Specification.new do |s|
54
54
  "lib/prefab/errors/initialization_timeout_error.rb",
55
55
  "lib/prefab/errors/invalid_api_key_error.rb",
56
56
  "lib/prefab/errors/missing_default_error.rb",
57
+ "lib/prefab/errors/missing_env_var_error.rb",
57
58
  "lib/prefab/errors/uninitialized_error.rb",
58
59
  "lib/prefab/evaluation.rb",
59
60
  "lib/prefab/evaluation_summary_aggregator.rb",
@@ -9,7 +9,7 @@ class IntegrationTest
9
9
  @input = parse_input(test_data['input'])
10
10
  @expected = parse_expected(test_data['expected'])
11
11
  @data = test_data['data']
12
- @expected_data = test_data['expected_data']
12
+ @expected_data = test_data['expected_data'] || []
13
13
  @aggregator = test_data['aggregator']
14
14
  @endpoint = test_data['endpoint']
15
15
  @test_client = capture_telemetry(base_client)
@@ -96,6 +96,13 @@ class IntegrationTest
96
96
  case error_type
97
97
  when 'missing_default' then Prefab::Errors::MissingDefaultError
98
98
  when 'initialization_timeout' then Prefab::Errors::InitializationTimeoutError
99
+ when 'unable_to_decrypt' then OpenSSL::Cipher::CipherError
100
+ when 'missing_env_var' then Prefab::Errors::MissingEnvVarError
101
+ when 'unable_to_coerce_env_var' then Prefab::Errors::EnvVarParseError
102
+ else
103
+ unless error_type.nil?
104
+ throw "Unknown error type: #{error_type}"
105
+ end
99
106
  end
100
107
  end
101
108
 
@@ -34,14 +34,16 @@ module IntegrationTestHelpers
34
34
  end
35
35
  end
36
36
 
37
+ SEVERITY_LOOKUP = Prefab::LogPathAggregator::SEVERITY_KEY.invert
38
+
37
39
  def self.prepare_post_data(it)
38
40
  case it.aggregator
39
41
  when "log_path"
40
42
  aggregator = it.test_client.log_path_aggregator
41
43
 
42
- it.data.each do |(path, data)|
43
- data.each_with_index do |count, severity|
44
- count.times { aggregator.push(path, severity) }
44
+ it.data.each do |data|
45
+ data['counts'].each_pair do |severity, count|
46
+ count.times { aggregator.push(data['logger_name'], SEVERITY_LOOKUP[severity]) }
45
47
  end
46
48
  end
47
49
 
@@ -113,23 +115,23 @@ module IntegrationTestHelpers
113
115
  when "example_contexts"
114
116
  aggregator = it.test_client.example_contexts_aggregator
115
117
 
116
- it.data.each do |hash|
117
- aggregator.record(Prefab::Context.new(hash))
118
+ it.data.each do |key, values|
119
+ aggregator.record(Prefab::Context.new({ key => values }))
118
120
  end
119
121
 
120
122
  expected_data = []
121
- it.expected_data.each do |data|
123
+ it.expected_data.each do |k, vs|
122
124
  expected_data << PrefabProto::ExampleContext.new(
123
125
  timestamp: 0,
124
126
  contextSet: PrefabProto::ContextSet.new(
125
- contexts: data.map do |(k, vs)|
127
+ contexts: [
126
128
  PrefabProto::Context.new(
127
129
  type: k,
128
- values: vs.map do |v|
129
- [v["key"], PrefabProto::ConfigValue.new(v["value_type"] => v["value"])]
130
+ values: vs.each_pair.map do |key, value|
131
+ [key, Prefab::ConfigValueWrapper.wrap(value)]
130
132
  end.to_h
131
133
  )
132
- end
134
+ ]
133
135
  )
134
136
  )
135
137
  end
@@ -154,7 +154,9 @@ class TestConfigValueUnwrapper < Minitest::Test
154
154
  lookup: "NON_EXISTENT_ENV_VAR_NAME"
155
155
  )
156
156
  config_value = PrefabProto::ConfigValue.new(provided: value)
157
- assert_equal '', unwrap(config_value, CONFIG, EMPTY_CONTEXT)
157
+ assert_raises(Prefab::Errors::MissingEnvVarError) do
158
+ unwrap(config_value, CONFIG, EMPTY_CONTEXT)
159
+ end
158
160
  end
159
161
 
160
162
  def test_unwrapping_encrypted_values_decrypts
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prefab-cloud-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Dwyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-17 00:00:00.000000000 Z
11
+ date: 2024-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -241,6 +241,7 @@ files:
241
241
  - lib/prefab/errors/initialization_timeout_error.rb
242
242
  - lib/prefab/errors/invalid_api_key_error.rb
243
243
  - lib/prefab/errors/missing_default_error.rb
244
+ - lib/prefab/errors/missing_env_var_error.rb
244
245
  - lib/prefab/errors/uninitialized_error.rb
245
246
  - lib/prefab/evaluation.rb
246
247
  - lib/prefab/evaluation_summary_aggregator.rb