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.
- checksums.yaml +4 -4
- data/.rubocop.yml +38 -0
- data/.ruby-version +1 -0
- data/Gemfile +17 -11
- data/Gemfile.lock +98 -95
- data/Rakefile +7 -5
- data/docker/stackify-ruby +8 -0
- data/docker/stackify-ruby-rvm +10 -0
- data/docker/stackify-ruby-test +28 -0
- data/lib/{stackify → stackify_apm}/agent.rb +42 -33
- data/lib/{stackify → stackify_apm}/config.rb +56 -39
- data/lib/{stackify → stackify_apm}/context.rb +5 -6
- data/lib/{stackify → stackify_apm}/context/request.rb +0 -0
- data/lib/{stackify → stackify_apm}/context/request/socket.rb +0 -0
- data/lib/{stackify → stackify_apm}/context/request/url.rb +2 -6
- data/lib/stackify_apm/context/response.rb +33 -0
- data/lib/{stackify → stackify_apm}/context_builder.rb +2 -5
- data/lib/{stackify → stackify_apm}/error.rb +7 -6
- data/lib/stackify_apm/error/exception.rb +37 -0
- data/lib/stackify_apm/error/log.rb +24 -0
- data/lib/stackify_apm/error_builder.rb +61 -0
- data/lib/stackify_apm/helper/database_helper.rb +27 -0
- data/lib/{stackify → stackify_apm}/instrumenter.rb +12 -19
- data/lib/{stackify → stackify_apm}/internal_error.rb +0 -0
- data/lib/{stackify → stackify_apm}/log.rb +0 -0
- data/lib/{stackify → stackify_apm}/logger/log_device.rb +22 -11
- data/lib/{stackify → stackify_apm}/logger/logger_high_version.rb +1 -6
- data/lib/{stackify → stackify_apm}/logger/logger_lower_version.rb +2 -1
- data/lib/stackify_apm/middleware.rb +70 -0
- data/lib/{stackify → stackify_apm}/naively_hashable.rb +1 -3
- data/lib/{stackify → stackify_apm}/normalizers.rb +3 -2
- data/lib/{stackify → stackify_apm}/normalizers/action_controller.rb +0 -0
- data/lib/{stackify → stackify_apm}/normalizers/action_mailer.rb +0 -0
- data/lib/{stackify → stackify_apm}/normalizers/action_view.rb +0 -0
- data/lib/{stackify → stackify_apm}/normalizers/active_record.rb +3 -25
- data/lib/{stackify → stackify_apm}/railtie.rb +5 -7
- data/lib/{stackify → stackify_apm}/root_info.rb +2 -6
- data/lib/{stackify → stackify_apm}/serializers.rb +3 -2
- data/lib/{stackify → stackify_apm}/serializers/errors.rb +7 -10
- data/lib/{stackify → stackify_apm}/serializers/transactions.rb +11 -18
- data/lib/{stackify → stackify_apm}/span.rb +8 -9
- data/lib/{stackify → stackify_apm}/span/context.rb +3 -1
- data/lib/{stackify → stackify_apm}/spies.rb +3 -2
- data/lib/{stackify → stackify_apm}/spies/action_dispatch.rb +3 -4
- data/lib/stackify_apm/spies/curb.rb +49 -0
- data/lib/stackify_apm/spies/curb/easy.rb +157 -0
- data/lib/stackify_apm/spies/curb/multi.rb +43 -0
- data/lib/{stackify → stackify_apm}/spies/httpclient.rb +10 -8
- data/lib/{stackify → stackify_apm}/spies/httprb.rb +7 -9
- data/lib/{stackify → stackify_apm}/spies/mongo.rb +5 -3
- data/lib/{stackify → stackify_apm}/spies/net_http.rb +4 -5
- data/lib/{stackify → stackify_apm}/spies/redis.rb +19 -18
- data/lib/stackify_apm/spies/sequel.rb +65 -0
- data/lib/{stackify → stackify_apm}/spies/sinatra.rb +7 -10
- data/lib/stackify_apm/spies/sinatra_activerecord/mysql_adapter.rb +201 -0
- data/lib/stackify_apm/spies/sinatra_activerecord/postgresql_adapter.rb +94 -0
- data/lib/stackify_apm/spies/sinatra_activerecord/sqlite_adapter.rb +46 -0
- data/lib/stackify_apm/spies/stackify_logger.rb +60 -0
- data/lib/{stackify → stackify_apm}/spies/tilt.rb +3 -3
- data/lib/stackify_apm/stacktrace.rb +18 -0
- data/lib/stackify_apm/stacktrace/frame.rb +47 -0
- data/lib/{stackify → stackify_apm}/stacktrace_builder.rb +10 -11
- data/lib/{stackify → stackify_apm}/subscriber.rb +20 -14
- data/lib/{stackify → stackify_apm}/trace_logger.rb +10 -16
- data/lib/stackify_apm/transaction.rb +127 -0
- data/lib/{stackify → stackify_apm}/util.rb +3 -1
- data/lib/{stackify → stackify_apm}/util/dig.rb +1 -1
- data/lib/{stackify → stackify_apm}/util/inflector.rb +0 -0
- data/lib/{stackify → stackify_apm}/util/inspector.rb +1 -3
- data/lib/stackify_apm/util/lru_cache.rb +49 -0
- data/lib/stackify_apm/util/trace_log_watcher.rb +37 -0
- data/lib/stackify_apm/version.rb +6 -0
- data/lib/{stackify → stackify_apm}/worker.rb +8 -7
- data/lib/stackify_ruby_apm.rb +18 -15
- data/run-test-docker.sh +50 -0
- data/run-test.sh +1 -3
- data/stackify-ruby-apm.gemspec +14 -11
- metadata +86 -59
- data/lib/stackify/context/response.rb +0 -37
- data/lib/stackify/error/exception.rb +0 -36
- data/lib/stackify/error/log.rb +0 -25
- data/lib/stackify/error_builder.rb +0 -65
- data/lib/stackify/middleware.rb +0 -74
- data/lib/stackify/spies/sinatra_activerecord/mysql_adapter.rb +0 -177
- data/lib/stackify/spies/sinatra_activerecord/postgresql_adapter.rb +0 -96
- data/lib/stackify/spies/sinatra_activerecord/sqlite_adapter.rb +0 -48
- data/lib/stackify/stacktrace.rb +0 -19
- data/lib/stackify/stacktrace/frame.rb +0 -50
- data/lib/stackify/transaction.rb +0 -132
- data/lib/stackify/util/lru_cache.rb +0 -49
- 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
|
|
@@ -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(
|
|
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
|
data/lib/stackify_ruby_apm.rb
CHANGED
|
@@ -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/
|
|
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 '
|
|
16
|
-
require '
|
|
17
|
-
require '
|
|
18
|
-
require '
|
|
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
|
|
21
|
-
require '
|
|
22
|
-
require '
|
|
23
|
-
require '
|
|
24
|
-
require '
|
|
25
|
-
require '
|
|
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 '
|
|
29
|
+
require 'stackify_apm/middleware'
|
|
28
30
|
|
|
29
31
|
# Checks if the framework using is Rails
|
|
30
|
-
require '
|
|
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
|
-
|
|
90
|
+
&block)
|
|
88
91
|
return (block_given? ? yield : nil) unless agent
|
|
89
92
|
|
|
90
93
|
agent.span(
|
data/run-test-docker.sh
ADDED
|
@@ -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 "====================================================="
|
data/stackify-ruby-apm.gemspec
CHANGED
|
@@ -1,29 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
|
|
2
|
-
lib = File.expand_path(
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
-
require
|
|
5
|
+
require 'stackify_apm/version'
|
|
5
6
|
|
|
6
7
|
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name =
|
|
8
|
+
spec.name = 'stackify-ruby-apm'
|
|
8
9
|
spec.version = StackifyRubyAPM::VERSION
|
|
9
|
-
spec.authors = [
|
|
10
|
-
spec.email = [
|
|
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
|
-
|
|
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 =
|
|
22
|
+
spec.bindir = 'exe'
|
|
21
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
22
|
-
spec.require_paths = [
|
|
24
|
+
spec.require_paths = ['lib']
|
|
23
25
|
|
|
24
|
-
spec.add_development_dependency
|
|
25
|
-
spec.add_development_dependency
|
|
26
|
-
spec.add_development_dependency
|
|
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
|
|
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-
|
|
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/
|
|
100
|
-
- lib/
|
|
101
|
-
- lib/
|
|
102
|
-
- lib/
|
|
103
|
-
- lib/
|
|
104
|
-
- lib/
|
|
105
|
-
- lib/
|
|
106
|
-
- lib/
|
|
107
|
-
- lib/
|
|
108
|
-
- lib/
|
|
109
|
-
- lib/
|
|
110
|
-
- lib/
|
|
111
|
-
- lib/
|
|
112
|
-
- lib/
|
|
113
|
-
- lib/
|
|
114
|
-
- lib/
|
|
115
|
-
- lib/
|
|
116
|
-
- lib/
|
|
117
|
-
- lib/
|
|
118
|
-
- lib/
|
|
119
|
-
- lib/
|
|
120
|
-
- lib/
|
|
121
|
-
- lib/
|
|
122
|
-
- lib/
|
|
123
|
-
- lib/
|
|
124
|
-
- lib/
|
|
125
|
-
- lib/
|
|
126
|
-
- lib/
|
|
127
|
-
- lib/
|
|
128
|
-
- lib/
|
|
129
|
-
- lib/
|
|
130
|
-
- lib/
|
|
131
|
-
- lib/
|
|
132
|
-
- lib/
|
|
133
|
-
- lib/
|
|
134
|
-
- lib/
|
|
135
|
-
- lib/
|
|
136
|
-
- lib/
|
|
137
|
-
- lib/
|
|
138
|
-
- lib/
|
|
139
|
-
- lib/
|
|
140
|
-
- lib/
|
|
141
|
-
- lib/
|
|
142
|
-
- lib/
|
|
143
|
-
- lib/
|
|
144
|
-
- lib/
|
|
145
|
-
- lib/
|
|
146
|
-
- lib/
|
|
147
|
-
- lib/
|
|
148
|
-
- lib/
|
|
149
|
-
- lib/
|
|
150
|
-
- lib/
|
|
151
|
-
- lib/
|
|
152
|
-
- lib/
|
|
153
|
-
- lib/
|
|
154
|
-
- lib/
|
|
155
|
-
- lib/
|
|
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
|