stackify-api-ruby 2.0.0 → 2.1.0

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: f9b32474a263221d764bb23c5d787f80e67072c62e0fcfa9c59eb006cc0900e6
4
- data.tar.gz: 71bab1fba537e39782c0bdb93a64bbcb66a4385e7bb010b82e50248cfd1e4f25
3
+ metadata.gz: 45f70bd546557ca3ad094de9cbdb9afaa74c098374989d4aa409ff1e991c27eb
4
+ data.tar.gz: eaae186f9225ef0e9a77f080d7ce66b90f494e9dae0910dd72bc8707fe5cedcf
5
5
  SHA512:
6
- metadata.gz: c9953e36b9c753ac698d3d8be088ad22f29d7897357d0ffd25aedeed55c8c6d99969632900c1df40798a5c54356dc2043147b20b4a9f6a691aeb922ed7f050db
7
- data.tar.gz: 26efa78b3d3a670e93a1bff5fe95fbc69686a230a55ae9863d43bc4cfb8dd2abdee5dfc2470e198114c3de7b130b95807efa2270d95bd7b588ab9239c945b690
6
+ metadata.gz: 3f522679e51a3a5cf8f73662b953e8d0c080199ff7bcd26a1683984ec632e9ed95c98759511da854403e032fb9acbe9a12845fba6ba514e84140332e39d72508
7
+ data.tar.gz: 3c57579708100f829646b9b885f71ec20c74d86b12d2537e00b9d23c8b49f1f43afc90b1190450f344fc1be439ebdbdde24ed4165e6b92daaf4b30ea617c815c
data/.gitignore CHANGED
@@ -21,3 +21,10 @@
21
21
  # Ignore IntelliJ files
22
22
  /.idea
23
23
  *.iml
24
+
25
+ # Ignore lock file
26
+ Gemfile.lock
27
+
28
+ # Version specific files
29
+ .ruby-version
30
+ .ruby-gemset
data/Gemfile CHANGED
@@ -1,8 +1,8 @@
1
1
  group :test do
2
2
  if ENV['STACKIFY_RUBY_TEST']
3
- gem 'stackify-ruby-apm', '~> 1.16.0', source: ENV['STACKIFY_RUBY_TEST_REPO']
3
+ gem 'stackify-ruby-apm', '~> 1.17.0.beta1', source: ENV['STACKIFY_RUBY_TEST_REPO']
4
4
  else
5
- gem 'stackify-ruby-apm', '~> 1.16.0'
5
+ gem 'stackify-ruby-apm', '~> 1.17.0.beta1'
6
6
  end
7
7
  end
8
8
 
@@ -3,7 +3,7 @@ module Stackify
3
3
  class Engine < ::Rails::Engine
4
4
 
5
5
  if Rails.version > '3.1'
6
- initializer 'Stackify set up of logger', group: :all do
6
+ initializer 'Stackify set up of logger', after: :initialize_logger , group: :all do
7
7
  if Gem::Version.new(Rails::VERSION::STRING) >= Gem::Version.new('4.0')
8
8
  # check if the client app is using the ActiveSupport::Logger
9
9
  is_activesupport_logger = ::Rails.logger.is_a?(ActiveSupport::Logger)
@@ -6,6 +6,7 @@ module Stackify
6
6
  rails_logger = logger
7
7
  num_level = logger.level
8
8
  @logger = rails_logger
9
+
9
10
  %w(debug info warn error fatal unknown).each do |level|
10
11
  stackify_logger = if level == 'debug'
11
12
  -> (msg, caller) { Stackify.logger_client.log(num_level, level.downcase, msg, caller) unless msg.to_s.empty? }
@@ -28,6 +29,10 @@ module Stackify
28
29
  @logger.send(name, *args, **kwargs, &block)
29
30
  end
30
31
 
32
+ def respond_to_missing?(*args, **kwargs, &block)
33
+ @logger.respond_to?(*args, **kwargs, &block)
34
+ end
35
+
31
36
  private
32
37
 
33
38
  def message *args, &block
@@ -1,3 +1,3 @@
1
1
  module Stackify
2
- VERSION = '2.0.0'
2
+ VERSION = '2.1.0'
3
3
  end
@@ -0,0 +1,41 @@
1
+ class DummyLogger
2
+ attr_reader :logs
3
+ attr_accessor :level
4
+
5
+ def initialize
6
+ @logs = []
7
+ end
8
+
9
+ def debug(message)
10
+ log('debug', message)
11
+ end
12
+
13
+ def info(message)
14
+ log('info', message)
15
+ end
16
+
17
+ def warn(message)
18
+ log('warn', message)
19
+ end
20
+
21
+ def error(message)
22
+ log('error', message)
23
+ end
24
+
25
+ def fatal(message)
26
+ log('fatal', message)
27
+ end
28
+
29
+ def unknown(message)
30
+ log('unknown', message)
31
+ end
32
+
33
+ def broadcast_to(arg1, arg2)
34
+ end
35
+
36
+ private
37
+
38
+ def log(level, message)
39
+ @logs << { level: level, message: message }
40
+ end
41
+ end
@@ -0,0 +1,4 @@
1
+ class DummyLoggerClient
2
+ def log num_level, level, msg, call_trace
3
+ end
4
+ end
@@ -0,0 +1,52 @@
1
+ require 'stackify-api-ruby'
2
+ require_relative '../helpers/dummy_logger'
3
+ require_relative '../helpers/dummy_logger_client'
4
+ require 'logger'
5
+
6
+ RSpec.describe ::Stackify::LoggerProxy do
7
+ let(:proxy_logger) { DummyLogger.new() }
8
+ let(:stackify_logger) { instance_double(DummyLoggerClient) }
9
+
10
+ before do
11
+ allow(stackify_logger).to receive(:log)
12
+ allow(::Stackify).to receive(:logger_client).and_return(stackify_logger)
13
+ allow(proxy_logger).to receive(:level).and_return(Logger::INFO)
14
+ end
15
+
16
+ subject { described_class.new(proxy_logger) }
17
+
18
+ describe '#initialize' do
19
+ it 'sets up the logger methods' do
20
+ expect(subject).to respond_to(:debug)
21
+ expect(subject).to respond_to(:info)
22
+ expect(subject).to respond_to(:warn)
23
+ expect(subject).to respond_to(:error)
24
+ expect(subject).to respond_to(:fatal)
25
+ expect(subject).to respond_to(:unknown)
26
+ end
27
+ end
28
+
29
+ describe 'log forwarding' do
30
+ it 'forwards log calls to Stackify and original logger' do
31
+ message = 'Test log message'
32
+
33
+ expect(Stackify.logger_client).to receive(:log).with(Logger::INFO, 'debug', message, any_args).once
34
+ expect(proxy_logger).to receive(:debug).with(message).once
35
+
36
+ subject.debug(message)
37
+ end
38
+ end
39
+
40
+ # Add more test cases for other log levels and scenarios
41
+ describe 'method_missing and respond_to_missing?' do
42
+ it 'forwards undefined methods to the original logger' do
43
+ # since broadcast_to is available only on the DummyLogger
44
+ expect(proxy_logger).to receive(:broadcast_to).with('arg1', 'arg2').once
45
+ subject.broadcast_to('arg1', 'arg2')
46
+ end
47
+
48
+ it 'correctly responds to defined and undefined methods' do
49
+ expect(subject).to respond_to(:broadcast_to)
50
+ end
51
+ end
52
+ end
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = 'Stackify Logs and Metrics API for Ruby'
13
13
  spec.homepage = 'http://www.stackify.com/'
14
14
  spec.license = 'Apache-2.0'
15
- spec.required_ruby_version = '>= 3.0'
15
+ spec.required_ruby_version = '>= 2.0'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0")
18
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stackify-api-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stackify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-20 00:00:00.000000000 Z
11
+ date: 2024-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -88,10 +88,7 @@ extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
90
  - ".gitignore"
91
- - ".ruby-gemset"
92
- - ".ruby-version"
93
91
  - Gemfile
94
- - Gemfile.lock
95
92
  - README.md
96
93
  - Rakefile
97
94
  - lib/core_ext/core_ext.rb
@@ -139,8 +136,11 @@ files:
139
136
  - lib/stackify/workers/logs_sender_worker.rb
140
137
  - lib/stackify/workers/msgs_queue_worker.rb
141
138
  - lib/stackify/workers/worker.rb
139
+ - spec/helpers/dummy_logger.rb
140
+ - spec/helpers/dummy_logger_client.rb
142
141
  - spec/rum_spec.rb
143
142
  - spec/spec_helper.rb
143
+ - spec/stackify/logger_proxy_spec.rb
144
144
  - stackify-api-ruby.gemspec
145
145
  homepage: http://www.stackify.com/
146
146
  licenses:
@@ -154,7 +154,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
154
154
  requirements:
155
155
  - - ">="
156
156
  - !ruby/object:Gem::Version
157
- version: '3.0'
157
+ version: '2.0'
158
158
  required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  requirements:
160
160
  - - ">="
@@ -166,5 +166,8 @@ signing_key:
166
166
  specification_version: 4
167
167
  summary: Stackify API for Ruby
168
168
  test_files:
169
+ - spec/helpers/dummy_logger.rb
170
+ - spec/helpers/dummy_logger_client.rb
169
171
  - spec/rum_spec.rb
170
172
  - spec/spec_helper.rb
173
+ - spec/stackify/logger_proxy_spec.rb
data/.ruby-gemset DELETED
@@ -1 +0,0 @@
1
- stackify-api-ruby
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- ruby-2.1.2
data/Gemfile.lock DELETED
@@ -1,84 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- stackify-api-ruby (2.0.0.beta1)
5
- faraday (~> 0.8)
6
- net_http_unix (~> 0.2)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- concurrent-ruby (1.2.2)
12
- delegate_matcher (0.4.3)
13
- proc_extensions (~> 0.2)
14
- diff-lcs (1.4.4)
15
- et-orbi (1.2.7)
16
- tzinfo
17
- faraday (0.17.4)
18
- multipart-post (>= 1.2, < 3)
19
- file-tail (1.2.0)
20
- tins (~> 1.0)
21
- fugit (1.8.1)
22
- et-orbi (~> 1, >= 1.2.7)
23
- raabro (~> 1.4)
24
- multipart-post (2.1.1)
25
- net_http_unix (0.2.2)
26
- proc_extensions (0.2)
27
- sourcify (~> 0.5)
28
- raabro (1.4.0)
29
- rake (10.5.0)
30
- rspec (3.10.0)
31
- rspec-core (~> 3.10.0)
32
- rspec-expectations (~> 3.10.0)
33
- rspec-mocks (~> 3.10.0)
34
- rspec-core (3.10.1)
35
- rspec-support (~> 3.10.0)
36
- rspec-expectations (3.10.1)
37
- diff-lcs (>= 1.2.0, < 2.0)
38
- rspec-support (~> 3.10.0)
39
- rspec-mocks (3.10.2)
40
- diff-lcs (>= 1.2.0, < 2.0)
41
- rspec-support (~> 3.10.0)
42
- rspec-support (3.10.2)
43
- ruby2ruby (2.5.0)
44
- ruby_parser (~> 3.1)
45
- sexp_processor (~> 4.6)
46
- ruby_parser (3.20.1)
47
- sexp_processor (~> 4.16)
48
- rufus-scheduler (3.8.2)
49
- fugit (~> 1.1, >= 1.1.6)
50
- sexp_processor (4.17.0)
51
- sourcify (0.5.0)
52
- file-tail (>= 1.0.5)
53
- ruby2ruby (>= 1.2.5)
54
- ruby_parser (>= 2.0.5)
55
- sexp_processor (>= 3.0.5)
56
- stackify-ruby-apm (1.16.0.beta1)
57
- concurrent-ruby
58
- delegate_matcher
59
- faraday
60
- net_http_unix
61
- rufus-scheduler
62
- sync (0.5.0)
63
- tins (1.32.1)
64
- sync
65
- tzinfo (2.0.6)
66
- concurrent-ruby (~> 1.0)
67
- tzinfo-data (1.2023.3)
68
- tzinfo (>= 1.0.0)
69
-
70
- PLATFORMS
71
- ruby
72
- x64-mingw-ucrt
73
- x86-mingw32
74
-
75
- DEPENDENCIES
76
- bundler (~> 2.0)
77
- rake (~> 10.0)
78
- rspec (~> 3.0)
79
- stackify-api-ruby!
80
- stackify-ruby-apm (~> 1.16.0.beta1)
81
- tzinfo-data
82
-
83
- BUNDLED WITH
84
- 2.4.10