stackify-ruby-apm 1.0.1 → 1.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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +38 -0
  3. data/.ruby-version +1 -0
  4. data/Gemfile +17 -11
  5. data/Gemfile.lock +98 -95
  6. data/Rakefile +7 -5
  7. data/docker/stackify-ruby +8 -0
  8. data/docker/stackify-ruby-rvm +10 -0
  9. data/docker/stackify-ruby-test +28 -0
  10. data/lib/{stackify → stackify_apm}/agent.rb +42 -33
  11. data/lib/{stackify → stackify_apm}/config.rb +56 -39
  12. data/lib/{stackify → stackify_apm}/context.rb +5 -6
  13. data/lib/{stackify → stackify_apm}/context/request.rb +0 -0
  14. data/lib/{stackify → stackify_apm}/context/request/socket.rb +0 -0
  15. data/lib/{stackify → stackify_apm}/context/request/url.rb +2 -6
  16. data/lib/stackify_apm/context/response.rb +33 -0
  17. data/lib/{stackify → stackify_apm}/context_builder.rb +2 -5
  18. data/lib/{stackify → stackify_apm}/error.rb +7 -6
  19. data/lib/stackify_apm/error/exception.rb +37 -0
  20. data/lib/stackify_apm/error/log.rb +24 -0
  21. data/lib/stackify_apm/error_builder.rb +61 -0
  22. data/lib/stackify_apm/helper/database_helper.rb +27 -0
  23. data/lib/{stackify → stackify_apm}/instrumenter.rb +12 -19
  24. data/lib/{stackify → stackify_apm}/internal_error.rb +0 -0
  25. data/lib/{stackify → stackify_apm}/log.rb +0 -0
  26. data/lib/{stackify → stackify_apm}/logger/log_device.rb +22 -11
  27. data/lib/{stackify → stackify_apm}/logger/logger_high_version.rb +1 -6
  28. data/lib/{stackify → stackify_apm}/logger/logger_lower_version.rb +2 -1
  29. data/lib/stackify_apm/middleware.rb +70 -0
  30. data/lib/{stackify → stackify_apm}/naively_hashable.rb +1 -3
  31. data/lib/{stackify → stackify_apm}/normalizers.rb +3 -2
  32. data/lib/{stackify → stackify_apm}/normalizers/action_controller.rb +0 -0
  33. data/lib/{stackify → stackify_apm}/normalizers/action_mailer.rb +0 -0
  34. data/lib/{stackify → stackify_apm}/normalizers/action_view.rb +0 -0
  35. data/lib/{stackify → stackify_apm}/normalizers/active_record.rb +3 -25
  36. data/lib/{stackify → stackify_apm}/railtie.rb +5 -7
  37. data/lib/{stackify → stackify_apm}/root_info.rb +2 -6
  38. data/lib/{stackify → stackify_apm}/serializers.rb +3 -2
  39. data/lib/{stackify → stackify_apm}/serializers/errors.rb +7 -10
  40. data/lib/{stackify → stackify_apm}/serializers/transactions.rb +11 -18
  41. data/lib/{stackify → stackify_apm}/span.rb +8 -9
  42. data/lib/{stackify → stackify_apm}/span/context.rb +3 -1
  43. data/lib/{stackify → stackify_apm}/spies.rb +3 -2
  44. data/lib/{stackify → stackify_apm}/spies/action_dispatch.rb +3 -4
  45. data/lib/stackify_apm/spies/curb.rb +49 -0
  46. data/lib/stackify_apm/spies/curb/easy.rb +157 -0
  47. data/lib/stackify_apm/spies/curb/multi.rb +43 -0
  48. data/lib/{stackify → stackify_apm}/spies/httpclient.rb +10 -8
  49. data/lib/{stackify → stackify_apm}/spies/httprb.rb +7 -9
  50. data/lib/{stackify → stackify_apm}/spies/mongo.rb +5 -3
  51. data/lib/{stackify → stackify_apm}/spies/net_http.rb +4 -5
  52. data/lib/{stackify → stackify_apm}/spies/redis.rb +19 -18
  53. data/lib/stackify_apm/spies/sequel.rb +65 -0
  54. data/lib/{stackify → stackify_apm}/spies/sinatra.rb +7 -10
  55. data/lib/stackify_apm/spies/sinatra_activerecord/mysql_adapter.rb +201 -0
  56. data/lib/stackify_apm/spies/sinatra_activerecord/postgresql_adapter.rb +94 -0
  57. data/lib/stackify_apm/spies/sinatra_activerecord/sqlite_adapter.rb +46 -0
  58. data/lib/stackify_apm/spies/stackify_logger.rb +60 -0
  59. data/lib/{stackify → stackify_apm}/spies/tilt.rb +3 -3
  60. data/lib/stackify_apm/stacktrace.rb +18 -0
  61. data/lib/stackify_apm/stacktrace/frame.rb +47 -0
  62. data/lib/{stackify → stackify_apm}/stacktrace_builder.rb +10 -11
  63. data/lib/{stackify → stackify_apm}/subscriber.rb +20 -14
  64. data/lib/{stackify → stackify_apm}/trace_logger.rb +10 -16
  65. data/lib/stackify_apm/transaction.rb +127 -0
  66. data/lib/{stackify → stackify_apm}/util.rb +3 -1
  67. data/lib/{stackify → stackify_apm}/util/dig.rb +1 -1
  68. data/lib/{stackify → stackify_apm}/util/inflector.rb +0 -0
  69. data/lib/{stackify → stackify_apm}/util/inspector.rb +1 -3
  70. data/lib/stackify_apm/util/lru_cache.rb +49 -0
  71. data/lib/stackify_apm/util/trace_log_watcher.rb +37 -0
  72. data/lib/stackify_apm/version.rb +6 -0
  73. data/lib/{stackify → stackify_apm}/worker.rb +8 -7
  74. data/lib/stackify_ruby_apm.rb +18 -15
  75. data/run-test-docker.sh +50 -0
  76. data/run-test.sh +1 -3
  77. data/stackify-ruby-apm.gemspec +14 -11
  78. metadata +86 -59
  79. data/lib/stackify/context/response.rb +0 -37
  80. data/lib/stackify/error/exception.rb +0 -36
  81. data/lib/stackify/error/log.rb +0 -25
  82. data/lib/stackify/error_builder.rb +0 -65
  83. data/lib/stackify/middleware.rb +0 -74
  84. data/lib/stackify/spies/sinatra_activerecord/mysql_adapter.rb +0 -177
  85. data/lib/stackify/spies/sinatra_activerecord/postgresql_adapter.rb +0 -96
  86. data/lib/stackify/spies/sinatra_activerecord/sqlite_adapter.rb +0 -48
  87. data/lib/stackify/stacktrace.rb +0 -19
  88. data/lib/stackify/stacktrace/frame.rb +0 -50
  89. data/lib/stackify/transaction.rb +0 -132
  90. data/lib/stackify/util/lru_cache.rb +0 -49
  91. data/lib/stackify/version.rb +0 -4
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StackifyRubyAPM
4
+ module Util
5
+ # @api private
6
+ class LruCache
7
+ def initialize(max_size = 512, &block)
8
+ @max_size = max_size
9
+ @data = Hash.new(&block)
10
+ @mutex = Mutex.new
11
+ end
12
+
13
+ def [](key)
14
+ @mutex.synchronize do
15
+ val = @data[key]
16
+ return unless val
17
+
18
+ add(key, val)
19
+ val
20
+ end
21
+ end
22
+
23
+ def []=(key, val)
24
+ @mutex.synchronize do
25
+ add(key, val)
26
+ end
27
+ end
28
+
29
+ def length
30
+ @data.length
31
+ end
32
+
33
+ def to_a
34
+ @data.to_a
35
+ end
36
+
37
+ private
38
+
39
+ def add(key, val)
40
+ @data.delete(key)
41
+ @data[key] = val
42
+
43
+ return unless @data.length > @max_size
44
+
45
+ @data.delete(@data.first[0])
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StackifyRubyAPM
4
+ module Util
5
+ # rubocop:disable all
6
+ # This class will handle the monitor of trace log files.
7
+ module TraceLogWatcher
8
+ require 'rufus-scheduler'
9
+
10
+ # delete_trace_logs - This method will scan the directory `/usr/local/stackify/stackify-ruby-apm/log/` for every 1 hour(configurable) and
11
+ # delete all trace log files that are older than 1 hour except the stackify-ruby-apm.log files will remain.
12
+ #
13
+ def self.delete_trace_logs(config)
14
+ format = '%Y-%m-%d %H:%M:%S %z'
15
+ log_trace_path = config.log_trace_path + '/*'
16
+ file_age = config.trace_log_age_in_hour
17
+ interval = config.check_trace_log_per_hour
18
+ scheduler = Rufus::Scheduler.new
19
+ scheduler.every(interval, tag: 'stackify_ruby_apm') do
20
+ Dir[log_trace_path].select { |exclude_file|
21
+ exclude_file =~ /^(?!.*stackify-ruby-apm-[0-9].log).*$/
22
+ }.map { |file|
23
+ modified_time = File.mtime(file)
24
+ t1 = DateTime.parse(modified_time.to_s, format)
25
+ current_time = Time.now.localtime.strftime(format)
26
+ t2 = DateTime.parse(current_time.to_s, format)
27
+ if t2 > t1
28
+ if modified_time < (Time.now - file_age)
29
+ FileUtils.rm(file)
30
+ end
31
+ end
32
+ }
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Sets the version of the APM
4
+ module StackifyRubyAPM
5
+ VERSION = '1.1.0'.freeze
6
+ end
@@ -1,9 +1,8 @@
1
1
  # frozen_string_literal: true
2
- #
2
+
3
3
  # This class will receive the transactions and send it to HTTP/TraceLogger.
4
4
  # Responsible for sending transactions to APM for every 10 secs (config.flush_interval default)
5
5
  # Worker will constantly execute transaction sending to APM until the Agent is stopped.
6
- #
7
6
 
8
7
  require 'concurrent/timer_task'
9
8
 
@@ -41,7 +40,6 @@ module StackifyRubyAPM
41
40
 
42
41
  attr_reader :config, :messages, :pending_transactions
43
42
 
44
- # rubocop:disable Metrics/MethodLength
45
43
  # Collects and sends the transactions
46
44
  #
47
45
  def run_forever
@@ -60,7 +58,6 @@ module StackifyRubyAPM
60
58
  end
61
59
  end
62
60
  end
63
- # rubocop:enable Metrics/MethodLength
64
61
 
65
62
  private
66
63
 
@@ -78,6 +75,7 @@ module StackifyRubyAPM
78
75
  end
79
76
  end
80
77
 
78
+ # rubocop:disable Lint/RescueException
81
79
  # Collects, builds, and sends transactions via HTTP/TraceLogger
82
80
  #
83
81
  def collect_and_send_transactions
@@ -93,15 +91,17 @@ module StackifyRubyAPM
93
91
  nil
94
92
  end
95
93
  end
94
+ # rubocop:enable Lint/RescueException
96
95
 
97
- def post_error(msg)
96
+ def post_error(_msg)
98
97
  return if pending_transactions.empty?
99
- transactions = collect_batched_transactions
100
- payload = @serializers.errors.build_all([msg.error])
98
+ # transactions = collect_batched_transactions
99
+ # payload = @serializers.errors.build_all([msg.error])
101
100
  debug '[Worker] post_error()'
102
101
  # @trace_logger.post(payload, transactions[0])
103
102
  end
104
103
 
104
+ # rubocop:disable Lint/HandleExceptions
105
105
  def collect_batched_transactions
106
106
  batch = []
107
107
 
@@ -115,5 +115,6 @@ module StackifyRubyAPM
115
115
 
116
116
  batch
117
117
  end
118
+ # rubocop:enable Lint/HandleExceptions
118
119
  end
119
120
  end
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  #
3
4
  # The entry point once the server starts after the Stackify APM has been integrated.
4
5
  #
5
6
  # Checks if Web App's framework is Rails or Sinatra:
6
7
  # if Rails
7
- # -> call lib/stackify/railtie.rb to start Agent
8
+ # -> call lib/stackify_apm/railtie.rb to start Agent
8
9
  # elsif Sinatra
9
10
  # -> access the Web App's /config.ru file to start Agent
10
11
  # end
@@ -12,23 +13,25 @@
12
13
  # Incoming requests are then handled by the Middleware (middleware.rb)
13
14
  #
14
15
 
15
- require 'stackify/log'
16
- require 'stackify/version'
17
- require 'stackify/util/dig'
18
- require 'stackify/agent'
16
+ require 'stackify_apm/log'
17
+ require 'stackify_apm/version'
18
+ require 'stackify_apm/util/dig'
19
+ require 'stackify_apm/agent'
19
20
  # Checks ruby version
20
- require (RUBY_VERSION.to_f >= 2.4) ? 'stackify/logger/logger_high_version' : 'stackify/logger/logger_lower_version'
21
- require 'stackify/config'
22
- require 'stackify/context'
23
- require 'stackify/instrumenter'
24
- require 'stackify/internal_error'
25
- require 'stackify/util'
21
+ require RUBY_VERSION.to_f >= 2.4 ? 'stackify_apm/logger/logger_high_version' : 'stackify_apm/logger/logger_lower_version'
22
+ require 'stackify_apm/helper/database_helper'
23
+ require 'stackify_apm/config'
24
+ require 'stackify_apm/context'
25
+ require 'stackify_apm/instrumenter'
26
+ require 'stackify_apm/internal_error'
27
+ require 'stackify_apm/util'
26
28
 
27
- require 'stackify/middleware'
29
+ require 'stackify_apm/middleware'
28
30
 
29
31
  # Checks if the framework using is Rails
30
- require 'stackify/railtie' if defined?(::Rails::Railtie)
32
+ require 'stackify_apm/railtie' if defined?(::Rails::Railtie)
31
33
 
34
+ # Start medoule for StackifyRubyAPM Agent
32
35
  module StackifyRubyAPM
33
36
  # Starts the StackifyRubyAPM Agent
34
37
  #
@@ -75,7 +78,7 @@ module StackifyRubyAPM
75
78
 
76
79
  agent.transaction(name, type, context: context, &block)
77
80
  end
78
-
81
+
79
82
  # Starts a new span under the current transaction
80
83
  #
81
84
  # @param name [String] A description of the span, eq `SELECT FROM "users"`
@@ -84,7 +87,7 @@ module StackifyRubyAPM
84
87
  # @yield [Span] Optional block encapsulating span
85
88
  # @return [Span] Unless block given
86
89
  def self.span(name, type = nil, context: nil, include_stacktrace: true,
87
- &block)
90
+ &block)
88
91
  return (block_given? ? yield : nil) unless agent
89
92
 
90
93
  agent.span(
@@ -0,0 +1,50 @@
1
+ #!/bin/bash
2
+
3
+ function startContainers() {
4
+ echo "Starting up containers..."
5
+ docker-compose up -d -V --remove-orphans --force-recreate
6
+ }
7
+
8
+ function stopContainers() {
9
+ echo "Stopping Containers..."
10
+ docker-compose down --remove-orphans
11
+
12
+ # delete volumes
13
+ echo "Delete Volumes..."
14
+ docker volume rm stackify-ruby-apm_postgresdata &> /dev/null
15
+ docker volume rm stackify-ruby-apm_mysqldata &> /dev/null
16
+ docker volume rm stackify-ruby-apm_mongodata &> /dev/null
17
+ docker volume rm stackify-ruby-apm_mongodata_config &> /dev/null
18
+ echo "Deleted Volumes"
19
+ }
20
+
21
+ if [[ "$(docker images -q stackify-ruby-rvm:latest 2> /dev/null)" == "" ]]; then
22
+ docker build --file docker/stackify-ruby-rvm . -t stackify-ruby-rvm:latest
23
+ fi
24
+
25
+ RUBY_VERSIONS=('2.0.0-p648' '2.1.10' '2.2.10' '2.3.7' '2.4.0' '2.5.1' '2.6.0-preview3')
26
+
27
+ for ver in "${RUBY_VERSIONS[@]}"
28
+ do
29
+
30
+ echo "Testing Ruby Version ${RUBY_VERSIONS}"
31
+
32
+ if [[ "$(docker images -q stackify-ruby-$ver:latest 2> /dev/null)" == "" ]]; then
33
+ docker build --build-arg version=${ver} --file docker/stackify-ruby . -t stackify-ruby-$ver:latest
34
+ fi
35
+
36
+ docker build --build-arg from_version=${ver} --build-arg version=${ver} --file docker/stackify-ruby-test . -t stackify-ruby-$ver-test:latest
37
+
38
+ startContainers
39
+ docker run -e version=${ver} --network="host" --name "stackify-ruby-${ver}-test" stackify-ruby-$ver-test:latest
40
+ stopContainers
41
+
42
+ docker rm "stackify-ruby-${ver}-test"
43
+
44
+ done
45
+
46
+
47
+
48
+
49
+
50
+
data/run-test.sh CHANGED
@@ -30,8 +30,6 @@ function rspec_on_multiple_versions(){
30
30
  set -e
31
31
 
32
32
  RUBY_VERSIONS=('2.0.0-p648' '2.1.10' '2.2.10' '2.3.7' '2.4.0' '2.5.1' '2.6.0-preview3')
33
- # BUNDLER ERROR
34
- # '2.0.0-p648' 2.1.10
35
33
 
36
34
  for ver in "${RUBY_VERSIONS[@]}"
37
35
  do
@@ -59,7 +57,7 @@ function rspec_on_multiple_versions(){
59
57
  echo ">>>Unit Test Error on Version: $ver<<<"
60
58
  stopContainers
61
59
  exit 1
62
- else
60
+ else
63
61
  echo "====================================================="
64
62
  echo "$ver: End Test"
65
63
  echo "====================================================="
@@ -1,29 +1,32 @@
1
+ # frozen_string_literal: true
1
2
 
2
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "stackify/version"
5
+ require 'stackify_apm/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "stackify-ruby-apm"
8
+ spec.name = 'stackify-ruby-apm'
8
9
  spec.version = StackifyRubyAPM::VERSION
9
- spec.authors = ["Stackify"]
10
- spec.email = ["support@stackify.com"]
10
+ spec.authors = ['Stackify']
11
+ spec.email = ['support@stackify.com']
11
12
  spec.summary = 'Stackify APM for Ruby'
12
13
  spec.homepage = 'http://www.stackify.com'
13
14
  spec.license = 'Stackify'
14
15
 
15
16
  # Specify which files should be added to the gem when it is released.
16
17
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
17
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
18
+
19
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
18
20
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|docs)/}) }
19
21
  end
20
- spec.bindir = "exe"
22
+ spec.bindir = 'exe'
21
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
- spec.require_paths = ["lib"]
24
+ spec.require_paths = ['lib']
23
25
 
24
- spec.add_development_dependency "bundler", "~> 1.16"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "rspec", "~> 3.0"
26
+ spec.add_development_dependency 'bundler', '~> 1.16'
27
+ spec.add_development_dependency 'rake', '~> 10.0'
28
+ spec.add_development_dependency 'rspec', '~> 3.0'
27
29
  spec.add_dependency('concurrent-ruby', '~> 1.0')
28
30
  spec.add_dependency('delegate_matcher', '~> 0.4')
31
+ spec.add_dependency('rufus-scheduler', '~> 3.5')
29
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stackify-ruby-apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stackify
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-16 00:00:00.000000000 Z
11
+ date: 2019-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.4'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rufus-scheduler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.5'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.5'
83
97
  description:
84
98
  email:
85
99
  - support@stackify.com
@@ -89,71 +103,84 @@ extra_rdoc_files: []
89
103
  files:
90
104
  - ".gitignore"
91
105
  - ".rspec"
106
+ - ".rubocop.yml"
107
+ - ".ruby-version"
92
108
  - Gemfile
93
109
  - Gemfile.lock
94
110
  - LICENSE.md
95
111
  - README.md
96
112
  - Rakefile
97
113
  - docker-compose.yml
114
+ - docker/stackify-ruby
115
+ - docker/stackify-ruby-rvm
116
+ - docker/stackify-ruby-test
98
117
  - lib/stackify-ruby-apm.rb
99
- - lib/stackify/agent.rb
100
- - lib/stackify/config.rb
101
- - lib/stackify/context.rb
102
- - lib/stackify/context/request.rb
103
- - lib/stackify/context/request/socket.rb
104
- - lib/stackify/context/request/url.rb
105
- - lib/stackify/context/response.rb
106
- - lib/stackify/context_builder.rb
107
- - lib/stackify/error.rb
108
- - lib/stackify/error/exception.rb
109
- - lib/stackify/error/log.rb
110
- - lib/stackify/error_builder.rb
111
- - lib/stackify/instrumenter.rb
112
- - lib/stackify/internal_error.rb
113
- - lib/stackify/log.rb
114
- - lib/stackify/logger/log_device.rb
115
- - lib/stackify/logger/logger_high_version.rb
116
- - lib/stackify/logger/logger_lower_version.rb
117
- - lib/stackify/middleware.rb
118
- - lib/stackify/naively_hashable.rb
119
- - lib/stackify/normalizers.rb
120
- - lib/stackify/normalizers/action_controller.rb
121
- - lib/stackify/normalizers/action_mailer.rb
122
- - lib/stackify/normalizers/action_view.rb
123
- - lib/stackify/normalizers/active_record.rb
124
- - lib/stackify/railtie.rb
125
- - lib/stackify/root_info.rb
126
- - lib/stackify/serializers.rb
127
- - lib/stackify/serializers/errors.rb
128
- - lib/stackify/serializers/transactions.rb
129
- - lib/stackify/span.rb
130
- - lib/stackify/span/context.rb
131
- - lib/stackify/spies.rb
132
- - lib/stackify/spies/action_dispatch.rb
133
- - lib/stackify/spies/httpclient.rb
134
- - lib/stackify/spies/httprb.rb
135
- - lib/stackify/spies/mongo.rb
136
- - lib/stackify/spies/net_http.rb
137
- - lib/stackify/spies/redis.rb
138
- - lib/stackify/spies/sinatra.rb
139
- - lib/stackify/spies/sinatra_activerecord/mysql_adapter.rb
140
- - lib/stackify/spies/sinatra_activerecord/postgresql_adapter.rb
141
- - lib/stackify/spies/sinatra_activerecord/sqlite_adapter.rb
142
- - lib/stackify/spies/tilt.rb
143
- - lib/stackify/stacktrace.rb
144
- - lib/stackify/stacktrace/frame.rb
145
- - lib/stackify/stacktrace_builder.rb
146
- - lib/stackify/subscriber.rb
147
- - lib/stackify/trace_logger.rb
148
- - lib/stackify/transaction.rb
149
- - lib/stackify/util.rb
150
- - lib/stackify/util/dig.rb
151
- - lib/stackify/util/inflector.rb
152
- - lib/stackify/util/inspector.rb
153
- - lib/stackify/util/lru_cache.rb
154
- - lib/stackify/version.rb
155
- - lib/stackify/worker.rb
118
+ - lib/stackify_apm/agent.rb
119
+ - lib/stackify_apm/config.rb
120
+ - lib/stackify_apm/context.rb
121
+ - lib/stackify_apm/context/request.rb
122
+ - lib/stackify_apm/context/request/socket.rb
123
+ - lib/stackify_apm/context/request/url.rb
124
+ - lib/stackify_apm/context/response.rb
125
+ - lib/stackify_apm/context_builder.rb
126
+ - lib/stackify_apm/error.rb
127
+ - lib/stackify_apm/error/exception.rb
128
+ - lib/stackify_apm/error/log.rb
129
+ - lib/stackify_apm/error_builder.rb
130
+ - lib/stackify_apm/helper/database_helper.rb
131
+ - lib/stackify_apm/instrumenter.rb
132
+ - lib/stackify_apm/internal_error.rb
133
+ - lib/stackify_apm/log.rb
134
+ - lib/stackify_apm/logger/log_device.rb
135
+ - lib/stackify_apm/logger/logger_high_version.rb
136
+ - lib/stackify_apm/logger/logger_lower_version.rb
137
+ - lib/stackify_apm/middleware.rb
138
+ - lib/stackify_apm/naively_hashable.rb
139
+ - lib/stackify_apm/normalizers.rb
140
+ - lib/stackify_apm/normalizers/action_controller.rb
141
+ - lib/stackify_apm/normalizers/action_mailer.rb
142
+ - lib/stackify_apm/normalizers/action_view.rb
143
+ - lib/stackify_apm/normalizers/active_record.rb
144
+ - lib/stackify_apm/railtie.rb
145
+ - lib/stackify_apm/root_info.rb
146
+ - lib/stackify_apm/serializers.rb
147
+ - lib/stackify_apm/serializers/errors.rb
148
+ - lib/stackify_apm/serializers/transactions.rb
149
+ - lib/stackify_apm/span.rb
150
+ - lib/stackify_apm/span/context.rb
151
+ - lib/stackify_apm/spies.rb
152
+ - lib/stackify_apm/spies/action_dispatch.rb
153
+ - lib/stackify_apm/spies/curb.rb
154
+ - lib/stackify_apm/spies/curb/easy.rb
155
+ - lib/stackify_apm/spies/curb/multi.rb
156
+ - lib/stackify_apm/spies/httpclient.rb
157
+ - lib/stackify_apm/spies/httprb.rb
158
+ - lib/stackify_apm/spies/mongo.rb
159
+ - lib/stackify_apm/spies/net_http.rb
160
+ - lib/stackify_apm/spies/redis.rb
161
+ - lib/stackify_apm/spies/sequel.rb
162
+ - lib/stackify_apm/spies/sinatra.rb
163
+ - lib/stackify_apm/spies/sinatra_activerecord/mysql_adapter.rb
164
+ - lib/stackify_apm/spies/sinatra_activerecord/postgresql_adapter.rb
165
+ - lib/stackify_apm/spies/sinatra_activerecord/sqlite_adapter.rb
166
+ - lib/stackify_apm/spies/stackify_logger.rb
167
+ - lib/stackify_apm/spies/tilt.rb
168
+ - lib/stackify_apm/stacktrace.rb
169
+ - lib/stackify_apm/stacktrace/frame.rb
170
+ - lib/stackify_apm/stacktrace_builder.rb
171
+ - lib/stackify_apm/subscriber.rb
172
+ - lib/stackify_apm/trace_logger.rb
173
+ - lib/stackify_apm/transaction.rb
174
+ - lib/stackify_apm/util.rb
175
+ - lib/stackify_apm/util/dig.rb
176
+ - lib/stackify_apm/util/inflector.rb
177
+ - lib/stackify_apm/util/inspector.rb
178
+ - lib/stackify_apm/util/lru_cache.rb
179
+ - lib/stackify_apm/util/trace_log_watcher.rb
180
+ - lib/stackify_apm/version.rb
181
+ - lib/stackify_apm/worker.rb
156
182
  - lib/stackify_ruby_apm.rb
183
+ - run-test-docker.sh
157
184
  - run-test.sh
158
185
  - stackify-ruby-apm.gemspec
159
186
  homepage: http://www.stackify.com