stackify-ruby-apm 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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