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 +5 -5
- data/.ruby-version +1 -1
- data/lib/infield/deprecation_warning.rb +27 -25
- data/lib/infield/rails.rb +1 -1
- data/lib/infield/version.rb +1 -1
- metadata +10 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f95bf9fb19e6f469e86301a068c099c82547c993
|
4
|
+
data.tar.gz: 98a3b708956e298ebbd4f98e6b0c6cea65d47a58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d67738e62f786af86d8280c9ce089feea58039330a1a10cb925cc53d5445002e0104a25ad4e3cca41c5191a22bee5da22d75285560a31f543790a15d631417a
|
7
|
+
data.tar.gz: aff3aa4a557756253806e8d939c593ac61f9a485030977ccb716194ae9a3595320278fdadc5da3bc60e84557e09f48cb1488b108ffe4535cb3e980cbb8415a19
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.0.0-p648
|
@@ -1,35 +1,45 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
4
|
-
require '
|
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
|
-
|
14
|
-
@event ||= Concurrent::Event.new
|
15
|
-
end
|
16
|
+
attr_reader :queue
|
16
17
|
|
17
|
-
def
|
18
|
-
@
|
19
|
-
|
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
|
-
|
25
|
-
|
26
|
-
|
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
|
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(
|
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|
|
64
|
-
|
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],
|
7
|
+
Infield::DeprecationWarning.log(payload[:message], validated: true)
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
data/lib/infield/version.rb
CHANGED
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.
|
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-
|
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
|
-
-
|
35
|
-
-
|
36
|
-
-
|
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
|
-
|
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
|