prefab-cloud-ruby 1.6.0.pre2 → 1.6.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20317c94cd1f107434e8d4df80851ecaecf026cc406dc421e0f36a769f1cbda1
4
- data.tar.gz: 5efce4e6ab0ada5a01257c41e716726e591eab2e91ec70fa9f57e220cfd1cd5d
3
+ metadata.gz: e0cc90e8b5acc15676a5101e6cbd902e37e38781ebb6d6fb33c892f938df3bbc
4
+ data.tar.gz: 68e1dbb144273aa9c54fb11efdf9333f2260a8805705d2aff47885719d995b7f
5
5
  SHA512:
6
- metadata.gz: 5bdf94c45e6c0a9c3e49939f392670cf0ed499eb5dfdbe63a8bfdf63ad6f501dbea7e6802b6053e2ee472d006663bfd353d2fe73be10ff5f68e06a574430e88b
7
- data.tar.gz: f29975d152647db4ba6ee3249732790dc89ed709d50b313a228c809f63b5ba770fae06f529a9ce6d213c12f1f6f6904ecb84f007824bcbfef6b88fe0f34c4f01
6
+ metadata.gz: 9518b4ab1b19e6f7532fd29146b26bd0fd4e3527dbc4fde041b61b712a843db95f6f9355d8afb0b2496436aab711ec5f4a57075dbaf80c7afd4bb85c35d92b53
7
+ data.tar.gz: d2f4806025b4c965792653149ac9976b47ed4f687bbbb9b73cf58af091a55d4ad03affe49e6cd55aba132fa1a49f422f73900a2d295abb3afb2867cf204bb533
@@ -22,7 +22,7 @@ jobs:
22
22
  runs-on: ubuntu-latest
23
23
  strategy:
24
24
  matrix:
25
- ruby-version: ['2.7', '3.0', '3.1']
25
+ ruby-version: ['2.7', '3.0', '3.3']
26
26
 
27
27
  steps:
28
28
  - uses: actions/checkout@v3
@@ -36,7 +36,9 @@ jobs:
36
36
  uses: ruby/setup-ruby@v1
37
37
  with:
38
38
  ruby-version: ${{ matrix.ruby-version }}
39
- bundler-cache: true # runs 'bundle install' and caches installed gems automatically
39
+ bundler-cache: false # runs 'bundle install' and caches installed gems automatically
40
+ - name: Install dependencies
41
+ run: bundle install --without development --jobs 4 --retry 3
40
42
  - name: Run tests
41
43
  run: bundle exec rake
42
44
  env:
data/CHANGELOG.md CHANGED
@@ -1,11 +1,20 @@
1
1
  # Changelog
2
2
 
3
- ## Unreleased
3
+ ## 1.6.1 - 2024-03-28
4
+
5
+ - Performance optimizations (#178)
6
+ - Global context (#182)
7
+
8
+ ## 1.6.0 - 2024-03-27
4
9
 
5
10
  - Use semantic_logger for internal logging (#173)
6
11
  - Remove Prefab::LoggerClient as a logger for end users (#173)
7
12
  - Provide log_filter for end users (#173)
8
13
 
14
+ ## 1.5.1 - 2024-02-22
15
+
16
+ - Fix: Send context shapes by default (#174)
17
+
9
18
  ## 1.5.0 - 2024-02-12
10
19
 
11
20
  - Fix potential inconsistent Context behavior (#172)
data/Gemfile CHANGED
@@ -7,8 +7,7 @@ gem 'google-protobuf', platforms: :ruby
7
7
  gem 'ld-eventsource'
8
8
  gem 'uuid'
9
9
 
10
- gem 'activesupport', '>= 4'
11
- gem 'actionpack', '>= 4'
10
+ gem 'activesupport', '>= 4'
12
11
 
13
12
  gem 'semantic_logger', require: "semantic_logger/sync"
14
13
 
data/Gemfile.lock CHANGED
@@ -1,23 +1,7 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- actionpack (7.1.2)
5
- actionview (= 7.1.2)
6
- activesupport (= 7.1.2)
7
- nokogiri (>= 1.8.5)
8
- racc
9
- rack (>= 2.2.4)
10
- rack-session (>= 1.0.1)
11
- rack-test (>= 0.6.3)
12
- rails-dom-testing (~> 2.2)
13
- rails-html-sanitizer (~> 1.6)
14
- actionview (7.1.2)
15
- activesupport (= 7.1.2)
16
- builder (~> 3.1)
17
- erubi (~> 1.11)
18
- rails-dom-testing (~> 2.2)
19
- rails-html-sanitizer (~> 1.6)
20
- activesupport (7.1.2)
4
+ activesupport (7.1.3.2)
21
5
  base64
22
6
  bigdecimal
23
7
  concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -27,34 +11,48 @@ GEM
27
11
  minitest (>= 5.1)
28
12
  mutex_m
29
13
  tzinfo (~> 2.0)
30
- addressable (2.8.0)
31
- public_suffix (>= 2.0.2, < 5.0)
14
+ addressable (2.8.6)
15
+ public_suffix (>= 2.0.2, < 6.0)
32
16
  ansi (1.5.0)
33
17
  base64 (0.2.0)
34
- benchmark-ips (2.10.0)
35
- bigdecimal (3.1.4)
18
+ benchmark-ips (2.13.0)
19
+ bigdecimal (3.1.7)
36
20
  builder (3.2.4)
37
- concurrent-ruby (1.1.10)
21
+ concurrent-ruby (1.2.3)
38
22
  connection_pool (2.4.1)
39
- crass (1.0.6)
40
23
  descendants_tracker (0.0.4)
41
24
  thread_safe (~> 0.3, >= 0.3.1)
42
- docile (1.3.5)
43
- domain_name (0.5.20190701)
44
- unf (>= 0.0.5, < 1.0.0)
45
- drb (2.2.0)
46
- ruby2_keywords
47
- erubi (1.12.0)
48
- faraday (1.3.0)
25
+ docile (1.4.0)
26
+ domain_name (0.6.20240107)
27
+ drb (2.2.1)
28
+ faraday (1.10.3)
29
+ faraday-em_http (~> 1.0)
30
+ faraday-em_synchrony (~> 1.0)
31
+ faraday-excon (~> 1.1)
32
+ faraday-httpclient (~> 1.0)
33
+ faraday-multipart (~> 1.0)
49
34
  faraday-net_http (~> 1.0)
50
- multipart-post (>= 1.2, < 3)
51
- ruby2_keywords
35
+ faraday-net_http_persistent (~> 1.0)
36
+ faraday-patron (~> 1.0)
37
+ faraday-rack (~> 1.0)
38
+ faraday-retry (~> 1.0)
39
+ ruby2_keywords (>= 0.0.4)
40
+ faraday-em_http (1.0.0)
41
+ faraday-em_synchrony (1.0.0)
42
+ faraday-excon (1.1.0)
43
+ faraday-httpclient (1.0.1)
44
+ faraday-multipart (1.0.4)
45
+ multipart-post (~> 2)
52
46
  faraday-net_http (1.0.1)
53
- ffi (1.15.5)
54
- ffi-compiler (1.0.1)
55
- ffi (>= 1.0.0)
47
+ faraday-net_http_persistent (1.2.0)
48
+ faraday-patron (1.0.0)
49
+ faraday-rack (1.0.0)
50
+ faraday-retry (1.0.3)
51
+ ffi (1.16.3)
52
+ ffi-compiler (1.3.2)
53
+ ffi (>= 1.15.5)
56
54
  rake
57
- git (1.13.0)
55
+ git (1.19.1)
58
56
  addressable (~> 2.8)
59
57
  rchardet (~> 1.8)
60
58
  github_api (0.19.0)
@@ -63,20 +61,21 @@ GEM
63
61
  faraday (>= 0.8, < 2)
64
62
  hashie (~> 3.5, >= 3.5.2)
65
63
  oauth2 (~> 1.0)
66
- google-protobuf (3.22.2)
67
- googleapis-common-protos-types (1.5.0)
68
- google-protobuf (~> 3.14)
64
+ google-protobuf (3.25.3)
65
+ googleapis-common-protos-types (1.14.0)
66
+ google-protobuf (~> 3.18)
69
67
  hashie (3.6.0)
70
- highline (2.0.3)
71
- http (5.0.1)
72
- addressable (~> 2.3)
68
+ highline (3.0.1)
69
+ http (5.2.0)
70
+ addressable (~> 2.8)
71
+ base64 (~> 0.1)
73
72
  http-cookie (~> 1.0)
74
73
  http-form_data (~> 2.2)
75
- llhttp-ffi (~> 0.3.0)
76
- http-cookie (1.0.4)
74
+ llhttp-ffi (~> 0.5.0)
75
+ http-cookie (1.0.5)
77
76
  domain_name (~> 0.5)
78
77
  http-form_data (2.3.0)
79
- i18n (1.14.1)
78
+ i18n (1.14.4)
80
79
  concurrent-ruby (~> 1.0)
81
80
  juwelier (2.4.9)
82
81
  builder
@@ -90,34 +89,32 @@ GEM
90
89
  rake
91
90
  rdoc
92
91
  semver2
93
- jwt (2.2.2)
92
+ jwt (2.8.1)
93
+ base64
94
94
  kamelcase (0.0.2)
95
95
  semver2 (~> 3)
96
- ld-eventsource (2.2.0)
96
+ ld-eventsource (2.2.2)
97
97
  concurrent-ruby (~> 1.0)
98
98
  http (>= 4.4.1, < 6.0.0)
99
- llhttp-ffi (0.3.1)
99
+ llhttp-ffi (0.5.0)
100
100
  ffi-compiler (~> 1.0)
101
101
  rake (~> 13.0)
102
- loofah (2.21.4)
103
- crass (~> 1.0.2)
104
- nokogiri (>= 1.12.0)
105
102
  macaddr (1.7.2)
106
103
  systemu (~> 2.6.5)
107
- mini_portile2 (2.8.2)
108
- minitest (5.16.2)
109
- minitest-focus (1.3.1)
104
+ mini_portile2 (2.8.5)
105
+ minitest (5.22.3)
106
+ minitest-focus (1.4.0)
110
107
  minitest (>= 4, < 6)
111
- minitest-reporters (1.5.0)
108
+ minitest-reporters (1.6.1)
112
109
  ansi
113
110
  builder
114
111
  minitest (>= 5.0)
115
112
  ruby-progressbar
116
113
  multi_json (1.15.0)
117
114
  multi_xml (0.6.0)
118
- multipart-post (2.1.1)
115
+ multipart-post (2.4.0)
119
116
  mutex_m (0.2.0)
120
- nokogiri (1.15.2)
117
+ nokogiri (1.16.3)
121
118
  mini_portile2 (~> 2.8.2)
122
119
  racc (~> 1.4)
123
120
  oauth2 (1.4.11)
@@ -126,41 +123,32 @@ GEM
126
123
  multi_json (~> 1.3)
127
124
  multi_xml (~> 0.5)
128
125
  rack (>= 1.2, < 4)
129
- psych (3.3.1)
130
- public_suffix (4.0.6)
131
- racc (1.7.0)
132
- rack (3.0.6.1)
133
- rack-session (2.0.0)
134
- rack (>= 3.0.0)
135
- rack-test (2.1.0)
136
- rack (>= 1.3)
137
- rails-dom-testing (2.2.0)
138
- activesupport (>= 5.0.0)
139
- minitest
140
- nokogiri (>= 1.6)
141
- rails-html-sanitizer (1.6.0)
142
- loofah (~> 2.21)
143
- nokogiri (~> 1.14)
144
- rake (13.0.6)
126
+ psych (5.1.2)
127
+ stringio
128
+ public_suffix (5.0.4)
129
+ racc (1.7.3)
130
+ rack (3.0.10)
131
+ rake (13.1.0)
145
132
  rchardet (1.8.0)
146
- rdoc (6.3.3)
147
- ruby-progressbar (1.11.0)
148
- ruby2_keywords (0.0.4)
133
+ rdoc (6.6.3.1)
134
+ psych (>= 4.0.0)
135
+ ruby-progressbar (1.13.0)
136
+ ruby2_keywords (0.0.5)
149
137
  semantic_logger (4.15.0)
150
138
  concurrent-ruby (~> 1.0)
151
139
  semver2 (3.4.2)
152
- simplecov (0.18.5)
140
+ simplecov (0.22.0)
153
141
  docile (~> 1.1)
154
142
  simplecov-html (~> 0.11)
143
+ simplecov_json_formatter (~> 0.1)
155
144
  simplecov-html (0.12.3)
145
+ simplecov_json_formatter (0.1.4)
146
+ stringio (3.1.0)
156
147
  systemu (2.6.5)
157
148
  thread_safe (0.3.6)
158
- timecop (0.9.4)
149
+ timecop (0.9.8)
159
150
  tzinfo (2.0.6)
160
151
  concurrent-ruby (~> 1.0)
161
- unf (0.1.4)
162
- unf_ext
163
- unf_ext (0.0.8)
164
152
  uuid (2.3.9)
165
153
  macaddr (~> 1.0)
166
154
 
@@ -168,7 +156,6 @@ PLATFORMS
168
156
  ruby
169
157
 
170
158
  DEPENDENCIES
171
- actionpack (>= 4)
172
159
  activesupport (>= 4)
173
160
  benchmark-ips
174
161
  bundler
data/README.md CHANGED
@@ -34,7 +34,7 @@ Many ruby web servers fork. When the process is forked, the current realtime upd
34
34
 
35
35
  ```ruby
36
36
  #config/application.rb
37
- Prefab.init # reads PREFAB_API_KEY env var
37
+ Prefab.init # reads PREFAB_API_KEY env var by default
38
38
  ```
39
39
 
40
40
  ```ruby
@@ -53,23 +53,51 @@ end
53
53
 
54
54
  ## Logging & Debugging
55
55
 
56
- To use dynamic logging. Install https://logger.rocketjob.io/rails.html and then add Prefab as a dynamic filter.
56
+ To use dynamic logging, we recommend [semantic logger]. Add semantic_logger to your Gemfile and then we'll configure our app to use it.
57
57
 
58
+ ### Plain ol' Ruby
59
+
60
+ ```ruby
61
+ # Gemfile
62
+ gem "semantic_logger"
58
63
  ```
64
+
65
+ ```ruby
66
+ require "semantic_logger"
67
+ require "prefab"
68
+
69
+ Prefab.init
70
+
71
+ SemanticLogger.sync!
72
+ SemanticLogger.default_level = :trace # Prefab will take over the filtering
73
+ SemanticLogger.add_appender(
74
+ io: $stdout,
75
+ formatter: :json,
76
+ filter: Prefab.log_filter,
77
+ )
78
+ ```
79
+
80
+ ### With Rails
81
+
82
+ ```ruby
83
+ # Gemfile
59
84
  gem "amazing_print"
60
85
  gem "rails_semantic_logger"
61
86
  ```
87
+
62
88
  ```ruby
63
- #application.rb
89
+ # config/application.rb
90
+ Prefab.init
91
+
92
+ # config/initializers/logging.rb
64
93
  SemanticLogger.sync!
65
94
  SemanticLogger.default_level = :trace # Prefab will take over the filtering
66
95
  SemanticLogger.add_appender(
67
96
  io: $stdout,
68
- formatter: Rails.env.development? ? :default : :json,
97
+ formatter: Rails.env.development? ? :color : :json,
69
98
  filter: Prefab.log_filter,
70
99
  )
71
- Prefab.init
72
- ````
100
+ ```
73
101
 
74
102
  ```ruby
75
103
  #puma.rb
@@ -102,3 +130,5 @@ REMOTE_BRANCH=main LOCAL_BRANCH=main bundle exec rake release
102
130
  ## Copyright
103
131
 
104
132
  Copyright (c) 2024 Prefab, Inc. See LICENSE.txt for further details.
133
+
134
+ [semantic logger]: https://logger.rocketjob.io/
data/Rakefile CHANGED
@@ -9,42 +9,45 @@ rescue Bundler::BundlerError => e
9
9
  warn 'Run `bundle install` to install missing gems'
10
10
  exit e.status_code
11
11
  end
12
+
12
13
  require 'rake'
13
- require 'juwelier'
14
- Juwelier::Tasks.new do |gem|
15
- # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
16
- gem.name = 'prefab-cloud-ruby'
17
- gem.homepage = 'http://github.com/prefab-cloud/prefab-cloud-ruby'
18
- gem.license = 'MIT'
19
- gem.summary = %(Prefab Ruby Infrastructure)
20
- gem.description = %(Feature Flags, Live Config, and Dynamic Log Levels as a service)
21
- gem.email = 'jdwyer@prefab.cloud'
22
- gem.authors = ['Jeff Dwyer']
14
+ task default: :test
23
15
 
24
- # dependencies defined in Gemfile
25
- end
26
- Juwelier::RubygemsDotOrgTasks.new
27
- require 'rake/testtask'
28
- Rake::TestTask.new(:test) do |test|
29
- test.libs << 'lib' << 'test'
30
- test.pattern = 'test/**/test_*.rb'
31
- test.verbose = true
32
- end
16
+ unless ENV['CI']
17
+ require 'juwelier'
18
+ Juwelier::Tasks.new do |gem|
19
+ # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
20
+ gem.name = 'prefab-cloud-ruby'
21
+ gem.homepage = 'http://github.com/prefab-cloud/prefab-cloud-ruby'
22
+ gem.license = 'MIT'
23
+ gem.summary = %(Prefab Ruby Infrastructure)
24
+ gem.description = %(Feature Flags, Live Config, and Dynamic Log Levels as a service)
25
+ gem.email = 'jdwyer@prefab.cloud'
26
+ gem.authors = ['Jeff Dwyer']
33
27
 
34
- desc 'Code coverage detail'
35
- task :simplecov do
36
- ENV['COVERAGE'] = 'true'
37
- Rake::Task['test'].execute
38
- end
28
+ # dependencies defined in Gemfile
29
+ end
30
+ Juwelier::RubygemsDotOrgTasks.new
31
+ require 'rake/testtask'
32
+ Rake::TestTask.new(:test) do |test|
33
+ test.libs << 'lib' << 'test'
34
+ test.pattern = 'test/**/test_*.rb'
35
+ test.verbose = true
36
+ end
39
37
 
40
- task default: :test
38
+ desc 'Code coverage detail'
39
+ task :simplecov do
40
+ ENV['COVERAGE'] = 'true'
41
+ Rake::Task['test'].execute
42
+ end
41
43
 
42
- require 'rdoc/task'
43
- Rake::RDocTask.new do |rdoc|
44
- version = File.exist?('VERSION') ? File.read('VERSION') : ''
44
+ require 'rdoc/task'
45
+ Rake::RDocTask.new do |rdoc|
46
+ version = File.exist?('VERSION') ? File.read('VERSION') : ''
45
47
 
46
- rdoc.rdoc_dir = 'rdoc'
47
- rdoc.title = "prefab-cloud-ruby #{version}"
48
- rdoc.rdoc_files.include('README*')
49
- rdoc.rdoc_files.include('lib/**/*.rb')
48
+ rdoc.rdoc_dir = 'rdoc'
49
+ rdoc.title = "prefab-cloud-ruby #{version}"
50
+ rdoc.rdoc_files.include('README*')
51
+ rdoc.rdoc_files.include('lib/**/*.rb')
52
+ end
50
53
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.6.0.pre2
1
+ 1.6.1
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+
6
+ gemspec = Dir.glob(File.expand_path("../../*.gemspec", __FILE__)).first
7
+ spec = Gem::Specification.load(gemspec)
8
+
9
+ # Add the require paths to the $LOAD_PATH
10
+ spec.require_paths.each do |path|
11
+ full_path = File.expand_path("../" + path, __dir__)
12
+ $LOAD_PATH.unshift(full_path) unless $LOAD_PATH.include?(full_path)
13
+ end
14
+
15
+ spec.require_paths.each do |path|
16
+ require "./lib/prefab-cloud-ruby"
17
+ end
18
+
19
+ require 'prefab-cloud-ruby'
20
+
21
+ $prefab = Prefab::Client.new(collect_logger_counts: false, collect_evaluation_summaries: false,
22
+ context_upload_mode: :none)
23
+ $prefab.get('prefab.auth.allowed_origins')
24
+
25
+ puts '-' * 80
26
+
27
+ require 'allocation_stats'
28
+
29
+ $runs = 100
30
+
31
+ def measure(description)
32
+ puts "Measuring #{description}..."
33
+ stats = $prefab.with_context(user: { email_suffix: 'yahoo.com' }) do
34
+ AllocationStats.trace do
35
+ $runs.times do
36
+ yield
37
+ end
38
+ end
39
+ end
40
+
41
+ allocations = stats.allocations(alias_paths: true).group_by(:sourcefile, :sourceline, :class)
42
+
43
+ if ENV['TOP']
44
+ puts allocations.sort_by_size.to_text.split("\n").first(20)
45
+ end
46
+
47
+ puts "Total allocations: #{allocations.all.values.map(&:size).sum}"
48
+ puts "Total memory: #{allocations.all.values.flatten.map(&:memsize).sum}"
49
+ puts stats.gc_profiler_report
50
+ end
51
+
52
+ measure "no-JIT context (#{$runs} runs)" do
53
+ $prefab.get('prefab.auth.allowed_origins')
54
+ end
55
+
56
+ puts "\n\n"
57
+
58
+ measure "with JIT context (#{$runs} runs)" do
59
+ $prefab.get('prefab.auth.allowed_origins', { a: { b: "c" } })
60
+ end
data/dev/benchmark ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+
6
+ gemspec = Dir.glob(File.expand_path("../../*.gemspec", __FILE__)).first
7
+ spec = Gem::Specification.load(gemspec)
8
+
9
+ # Add the require paths to the $LOAD_PATH
10
+ spec.require_paths.each do |path|
11
+ full_path = File.expand_path("../" + path, __dir__)
12
+ $LOAD_PATH.unshift(full_path) unless $LOAD_PATH.include?(full_path)
13
+ end
14
+
15
+ spec.require_paths.each do |path|
16
+ require "./lib/prefab-cloud-ruby"
17
+ end
18
+
19
+ require 'prefab-cloud-ruby'
20
+ require 'benchmark/ips'
21
+
22
+ prefab = Prefab::Client.new(collect_logger_counts: false, collect_evaluation_summaries: false,
23
+ context_upload_mode: :none)
24
+
25
+ prefab.get('prefab.auth.allowed_origins')
26
+
27
+ prefab.with_context(user: { email_suffix: 'yahoo.com' }) do
28
+ Benchmark.ips do |x|
29
+ x.report("noop") do
30
+ end
31
+
32
+ x.report('prefab.get') do
33
+ prefab.get('prefab.auth.allowed_origins')
34
+ end
35
+
36
+ x.report('prefab.get with jit context') do
37
+ prefab.get('prefab.auth.allowed_origins', { a: { b: "c" } })
38
+ end
39
+ end
40
+ end
data/lib/prefab/client.rb CHANGED
@@ -29,6 +29,9 @@ module Prefab
29
29
  end
30
30
 
31
31
  context.clear
32
+
33
+ Prefab::Context.global_context = @options.global_context
34
+
32
35
  # start config client
33
36
  config_client
34
37
  end
@@ -51,6 +54,7 @@ module Prefab
51
54
 
52
55
  def log_path_aggregator
53
56
  return nil if @options.collect_max_paths <= 0
57
+
54
58
  @log_path_aggregator ||= LogPathAggregator.new(client: self, max_paths: @options.collect_max_paths,
55
59
  sync_interval: @options.collect_sync_interval)
56
60
  end
@@ -87,14 +91,7 @@ module Prefab
87
91
  end
88
92
 
89
93
  def set_rails_loggers
90
- Rails.logger = log
91
- ActionView::Base.logger = log
92
- ActionController::Base.logger = log
93
- ActiveJob::Base.logger = log if defined?(ActiveJob)
94
- ActiveRecord::Base.logger = log
95
- ActiveStorage.logger = log if defined?(ActiveStorage)
96
-
97
- LogSubscribers::ActionControllerSubscriber.attach_to :action_controller unless @options.disable_action_controller_logging
94
+ warn '[DEPRECATION] `set_rails_loggers` is deprecated since 1.6. Please use semantic_logger or `Prefab.log_filter` instead.'
98
95
  end
99
96
 
100
97
  def on_update(&block)
@@ -60,7 +60,7 @@ module Prefab
60
60
  @base_client.example_contexts_aggregator.record(context)
61
61
  end
62
62
 
63
- evaluation = _get(key, context)
63
+ evaluation = _get(key, properties)
64
64
 
65
65
  @base_client.context_shape_aggregator&.push(context)
66
66
 
@@ -168,7 +168,7 @@ module Prefab
168
168
  ]
169
169
  end.to_h
170
170
 
171
- @config_resolver.default_context = default_contexts || {}
171
+ Prefab::Context.default_context = default_contexts || {}
172
172
 
173
173
  configs.configs.each do |config|
174
174
  @config_loader.set(config, source)
@@ -5,8 +5,6 @@ module Prefab
5
5
  attr_accessor :project_env_id # this will be set by the config_client when it gets an API response
6
6
  attr_reader :local_store
7
7
 
8
- attr_accessor :default_context
9
-
10
8
  def initialize(base_client, config_loader)
11
9
  @lock = Concurrent::ReadWriteLock.new
12
10
  @local_store = {}
@@ -14,7 +12,6 @@ module Prefab
14
12
  @project_env_id = 0 # we don't know this yet, it is set from the API results
15
13
  @base_client = base_client
16
14
  @on_update = nil
17
- @default_context = {}
18
15
  make_local
19
16
  end
20
17
 
@@ -59,11 +56,13 @@ module Prefab
59
56
  end
60
57
 
61
58
  def make_context(properties)
62
- if properties == NO_DEFAULT_PROVIDED || properties.nil?
59
+ if properties.is_a?(Context)
60
+ properties
61
+ elsif properties == NO_DEFAULT_PROVIDED || properties.nil?
63
62
  Context.current
64
63
  else
65
- Context.merge_with_current(properties)
66
- end.merge_default(default_context || {})
64
+ Context.join(parent: Context.current, hash: properties, id: :jit)
65
+ end
67
66
  end
68
67
 
69
68
  private