infield 0.1.3 → 0.1.5

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
- SHA256:
3
- metadata.gz: e62979b43ae9bf3fff7bea388d4fb59fd9c9bb91d08f41f8b986c7bf5e4bae39
4
- data.tar.gz: 724d1b82c5a9c629f12bf9730923cf05388a8d374b5613218f92ccf9e13842b0
2
+ SHA1:
3
+ metadata.gz: f95bf9fb19e6f469e86301a068c099c82547c993
4
+ data.tar.gz: 98a3b708956e298ebbd4f98e6b0c6cea65d47a58
5
5
  SHA512:
6
- metadata.gz: 84f01fd9f71ee65e7f01833fa972aa5dc5bfcac50869d34110db64fee9a933fd76f41be2aca6b5916759f1997efeb0c87dc76fdf3046bd2601201f2db7a97752
7
- data.tar.gz: 12a31dcdb3e226c102a0d0aa2ce6be3c61de84024817b82e300217f1197b95b5f6778e731418eb391696d7a341a9f7b7f5fe24379b7fa22c4fe06ead8ae99e5e
6
+ metadata.gz: 0d67738e62f786af86d8280c9ce089feea58039330a1a10cb925cc53d5445002e0104a25ad4e3cca41c5191a22bee5da22d75285560a31f543790a15d631417a
7
+ data.tar.gz: aff3aa4a557756253806e8d939c593ac61f9a485030977ccb716194ae9a3595320278fdadc5da3bc60e84557e09f48cb1488b108ffe4535cb3e980cbb8415a19
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.2.3
1
+ 2.0.0-p648
@@ -1,35 +1,45 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'concurrent/array'
4
- require 'concurrent/atomic/event'
3
+ require 'thread'
4
+ require 'json'
5
5
  require 'net/http'
6
6
 
7
7
  module Infield
8
+ # Takes in new deprecation warnings and sends them to the Infield API
9
+ # in batches
8
10
  module DeprecationWarning
9
11
  Task = Struct.new(:message, :callstack)
10
12
 
13
+ # Handles spinning up a thread to process work
11
14
  module Runner
12
15
  class << self
13
- def event
14
- @event ||= Concurrent::Event.new
15
- end
16
+ attr_reader :queue
16
17
 
17
- def tasks
18
- @tasks ||= Concurrent::Array.new
19
- end
18
+ def run(sleep_interval: 1, batch_size: 20)
19
+ @queue ||= Queue.new
20
+ @sleep_interval = sleep_interval
21
+ @batch_size = batch_size # send up to 20 messages to API at once
20
22
 
21
- def run
22
23
  Thread.new do
23
24
  loop do
24
- event.wait
25
- deliver
26
- event.reset
25
+ sleep(@sleep_interval)
26
+ next if @queue.empty?
27
+
28
+ process_queue
27
29
  end
28
30
  end
29
31
  end
30
32
 
31
33
  private
32
34
 
35
+ def process_queue
36
+ messages = []
37
+ messages << @queue.pop until @queue.empty?
38
+ messages.each_slice(@batch_size) do |batch|
39
+ post_deprecation_warnings(batch)
40
+ end
41
+ end
42
+
33
43
  def default_api_params
34
44
  { repo_environment_id: Infield.repo_environment_id,
35
45
  environment: Infield.environment }
@@ -39,35 +49,27 @@ module Infield
39
49
  URI.parse(Infield.infield_api_url)
40
50
  end
41
51
 
42
- def upload_message(task)
52
+ def post_deprecation_warnings(tasks)
53
+ messages = tasks.map { |w| { message: w.message } }
43
54
  uri = infield_api_uri
44
55
  Net::HTTP.start(uri.host, uri.port, use_ssl: (uri.scheme == 'https')) do |http|
45
56
  http.post('/api/raw_deprecation_warnings',
46
- default_api_params.merge(message: task.message).to_json,
57
+ default_api_params.merge(messages: messages).to_json,
47
58
  { 'Content-Type' => 'application/json', 'Authorization' => "bearer #{Infield.api_key}" })
48
59
  end
49
60
  end
50
-
51
- def deliver
52
- while (task = tasks.shift)
53
- upload_message(task)
54
- end
55
- end
56
61
  end
57
62
  end
58
63
 
59
64
  class << self
60
65
  def log(*messages, callstack: nil, validated: false)
61
- callstack ||= caller_locations(2)
62
66
  messages = messages.select(&method(:valid_message)) unless validated
63
- messages.each { |message| tasks << Task.new(message, callstack) }
64
- Runner.event.set
67
+ messages.each { |message| Runner.queue << Task.new(message, callstack) }
68
+ true
65
69
  end
66
70
 
67
71
  private
68
72
 
69
- delegate :tasks, to: 'Infield::DeprecationWarning::Runner'
70
-
71
73
  def valid_message(message)
72
74
  message =~ /(?:^|\W)deprecated(?:$|\W)/i
73
75
  end
data/lib/infield/rails.rb CHANGED
@@ -4,7 +4,7 @@ module Infield
4
4
  class Railtie < Rails::Railtie
5
5
  initializer 'infield.deprecation_warnings', after: 'active_support.deprecation_behavior' do |_app|
6
6
  ActiveSupport::Notifications.subscribe('deprecation.rails') do |_name, _start, _finish, _id, payload|
7
- Infield::DeprecationWarning.log(payload[:message], callstack: payload[:callstack], validated: true)
7
+ Infield::DeprecationWarning.log(payload[:message], validated: true)
8
8
  end
9
9
  end
10
10
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Infield
4
- VERSION = '0.1.3'
4
+ VERSION = '0.1.5'
5
5
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infield
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Infield
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-09-13 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: concurrent-ruby
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.0'
11
+ date: 2024-09-16 00:00:00.000000000 Z
12
+ dependencies: []
27
13
  description:
28
14
  email:
29
15
  - support@infield.ai
@@ -31,9 +17,9 @@ executables: []
31
17
  extensions: []
32
18
  extra_rdoc_files: []
33
19
  files:
34
- - ".rspec"
35
- - ".rubocop.yml"
36
- - ".ruby-version"
20
+ - .rspec
21
+ - .rubocop.yml
22
+ - .ruby-version
37
23
  - CHANGELOG.md
38
24
  - LICENSE.txt
39
25
  - README.md
@@ -54,16 +40,17 @@ require_paths:
54
40
  - lib
55
41
  required_ruby_version: !ruby/object:Gem::Requirement
56
42
  requirements:
57
- - - ">="
43
+ - - '>='
58
44
  - !ruby/object:Gem::Version
59
45
  version: 2.0.0
60
46
  required_rubygems_version: !ruby/object:Gem::Requirement
61
47
  requirements:
62
- - - ">="
48
+ - - '>='
63
49
  - !ruby/object:Gem::Version
64
50
  version: '0'
65
51
  requirements: []
66
- rubygems_version: 3.4.19
52
+ rubyforge_project:
53
+ rubygems_version: 2.0.14.1
67
54
  signing_key:
68
55
  specification_version: 4
69
56
  summary: Send deprecation warnings to Infield