infield 0.1.5 → 0.1.7

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
- SHA1:
3
- metadata.gz: f95bf9fb19e6f469e86301a068c099c82547c993
4
- data.tar.gz: 98a3b708956e298ebbd4f98e6b0c6cea65d47a58
2
+ SHA256:
3
+ metadata.gz: 9f31b7037fa451372f99dbdd746e5732f5c377150f57aa12fe2b9864812fdfff
4
+ data.tar.gz: 95b3da1a0ba4f633deaa8161b05105d92d90e309201c7feb3d87fd05507eeae7
5
5
  SHA512:
6
- metadata.gz: 0d67738e62f786af86d8280c9ce089feea58039330a1a10cb925cc53d5445002e0104a25ad4e3cca41c5191a22bee5da22d75285560a31f543790a15d631417a
7
- data.tar.gz: aff3aa4a557756253806e8d939c593ac61f9a485030977ccb716194ae9a3595320278fdadc5da3bc60e84557e09f48cb1488b108ffe4535cb3e980cbb8415a19
6
+ metadata.gz: 91baa2990a521179d6c90f9e532a212fcb7029cc6bddf7115c086462f18022ddcc69e8d427c3da01d2057e3967328978db7640f9d87c1f44340e7d8819191597
7
+ data.tar.gz: 47df1183a08550649198745bfb0e1fea88493b61f31d025e52106e9aceed1f1acb9c043417a3eda50850b15c7e18c74c94b5d43dccbd49dc389a11136dc59638
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.0.0-p648
1
+ 3.2.3
@@ -12,12 +12,29 @@ module Infield
12
12
 
13
13
  # Handles spinning up a thread to process work
14
14
  module Runner
15
+ # The list of errors ::Net::HTTP is known to raise
16
+ # See https://github.com/ruby/ruby/blob/b0c639f249165d759596f9579fa985cb30533de6/lib/bundler/fetcher.rb#L281-L286
17
+ HTTP_ERRORS = [
18
+ Timeout::Error, EOFError, SocketError, Errno::ENETDOWN, Errno::ENETUNREACH,
19
+ Errno::EINVAL, Errno::ECONNRESET, Errno::ETIMEDOUT, Errno::EAGAIN,
20
+ Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError,
21
+ Zlib::BufError, Errno::EHOSTUNREACH, Errno::ECONNREFUSED
22
+ ].freeze
23
+
15
24
  class << self
16
25
  attr_reader :queue
17
26
 
18
- def run(sleep_interval: 1, batch_size: 20)
27
+ def enqueue(message)
28
+ return if @queue.size >= @queue_limit
29
+ @queue << message
30
+ end
31
+
32
+ def run(sleep_interval: 5, batch_size: 10, queue_limit: 30)
19
33
  @queue ||= Queue.new
20
34
  @sleep_interval = sleep_interval
35
+ # Queue cannot be larger than this. If more than this number of messages come in
36
+ # before the next wake interval any extra are dropped
37
+ @queue_limit = queue_limit
21
38
  @batch_size = batch_size # send up to 20 messages to API at once
22
39
 
23
40
  Thread.new do
@@ -57,6 +74,7 @@ module Infield
57
74
  default_api_params.merge(messages: messages).to_json,
58
75
  { 'Content-Type' => 'application/json', 'Authorization' => "bearer #{Infield.api_key}" })
59
76
  end
77
+ rescue *HTTP_ERRORS => e
60
78
  end
61
79
  end
62
80
  end
@@ -64,7 +82,7 @@ module Infield
64
82
  class << self
65
83
  def log(*messages, callstack: nil, validated: false)
66
84
  messages = messages.select(&method(:valid_message)) unless validated
67
- messages.each { |message| Runner.queue << Task.new(message, callstack) }
85
+ messages.each { |message| Runner.enqueue(Task.new(message, callstack)) }
68
86
  true
69
87
  end
70
88
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Infield
4
- VERSION = '0.1.5'
4
+ VERSION = '0.1.7'
5
5
  end
data/lib/infield.rb CHANGED
@@ -13,7 +13,7 @@ module Infield
13
13
  class << self
14
14
  attr_accessor :api_key, :repo_environment_id, :environment, :infield_api_url
15
15
 
16
- def run(api_key: nil, repo_environment_id: nil, environment: nil)
16
+ def run(api_key: nil, repo_environment_id: nil, environment: nil, sleep_interval: 5, batch_size: 10, queue_limit: 30)
17
17
  @api_key = api_key || ENV['INFIELD_API_KEY']
18
18
  @repo_environment_id = repo_environment_id
19
19
  @infield_api_url = ENV['INFIELD_API_URL'] || 'https://app.infield.ai'
@@ -21,7 +21,7 @@ module Infield
21
21
  raise 'repo_environment_id is required' unless @repo_environment_id
22
22
 
23
23
  @environment = environment || defined?(Rails) ? Rails.env : nil
24
- DeprecationWarning::Runner.run
24
+ DeprecationWarning::Runner.run(sleep_interval: sleep_interval, batch_size: batch_size, queue_limit: queue_limit)
25
25
  end
26
26
  end
27
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infield
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Infield
@@ -17,9 +17,9 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
- - .rspec
21
- - .rubocop.yml
22
- - .ruby-version
20
+ - ".rspec"
21
+ - ".rubocop.yml"
22
+ - ".ruby-version"
23
23
  - CHANGELOG.md
24
24
  - LICENSE.txt
25
25
  - README.md
@@ -40,17 +40,16 @@ require_paths:
40
40
  - lib
41
41
  required_ruby_version: !ruby/object:Gem::Requirement
42
42
  requirements:
43
- - - '>='
43
+ - - ">="
44
44
  - !ruby/object:Gem::Version
45
45
  version: 2.0.0
46
46
  required_rubygems_version: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - '>='
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '0'
51
51
  requirements: []
52
- rubyforge_project:
53
- rubygems_version: 2.0.14.1
52
+ rubygems_version: 3.4.19
54
53
  signing_key:
55
54
  specification_version: 4
56
55
  summary: Send deprecation warnings to Infield