perfetto 0.1.7 → 0.1.8
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/README.md +2 -3
- data/lib/perfetto/middleware.rb +20 -17
- data/lib/perfetto/version.rb +1 -1
- data/lib/perfetto.rb +5 -2
- metadata +1 -2
- data/perfetto.gemspec +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd838b9d196922765c51a65336d1304c6d9ac9aca456fce60d42b8c72b8b62d4
|
4
|
+
data.tar.gz: 9c1972ee1b588bd0dacaaca9cd81c39d90fd892ff0c57b0286157cf8944c6ae8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92e2da1eceb1263f9d9590fed6130623deee27ab0caa9e4faaf701e3ad340456a6c3730abba3b84da93df94f732a9136ddc8fa9eb7558344701fc132a7f6b69e
|
7
|
+
data.tar.gz: f2f6ba2c22ca06fdaea0e09c6ad5e555d7b580a6630a77ff0132c0de1ee188fd33c6ab76b35fc5819a8ea1f5aed5863323207b232c0dfabbb633b6b524136247
|
data/README.md
CHANGED
@@ -94,16 +94,15 @@ Perfetto.stop_tracing "example.pftrace"
|
|
94
94
|
require "sinatra/base"
|
95
95
|
require "perfetto"
|
96
96
|
|
97
|
-
Perfetto.setup enable_tracing: true
|
98
|
-
|
99
97
|
class Server < Sinatra::Base
|
100
|
-
use Perfetto::Middleware
|
98
|
+
use Perfetto::Middleware, env_proc: ->(env) { env.to_json }
|
101
99
|
|
102
100
|
get "/" do
|
103
101
|
"Hello World"
|
104
102
|
end
|
105
103
|
end
|
106
104
|
|
105
|
+
Perfetto.setup enable_tracing: true
|
107
106
|
Perfetto.start_tracing
|
108
107
|
Server.run!
|
109
108
|
Perfetto.stop_tracing "middleware.pftrace"
|
data/lib/perfetto/middleware.rb
CHANGED
@@ -1,32 +1,35 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "json"
|
4
|
-
|
5
3
|
module Perfetto
|
6
4
|
# Rack middleware
|
7
5
|
class Middleware
|
8
6
|
def initialize(app, options = {})
|
9
7
|
@app = app
|
10
8
|
@options = options
|
9
|
+
@env_proc = options[:env_proc]
|
11
10
|
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
Perfetto.trace_event_end category
|
24
|
-
end
|
25
|
-
end
|
26
|
-
else # Stub methods
|
27
|
-
def call(env)
|
12
|
+
# rubocop:disable Metrics/MethodLength
|
13
|
+
def perfetto_traced_call(env)
|
14
|
+
category = "RackMiddleware"
|
15
|
+
method = env["REQUEST_METHOD"] || "UNKNOWN"
|
16
|
+
path = env["PATH_INFO"] || "UNKNOWN PATH"
|
17
|
+
task_name = "#{method} #{path}"
|
18
|
+
env_str = @env_proc&.call(env) || { env: "unknown" }.to_json
|
19
|
+
|
20
|
+
Perfetto.trace_event_begin_with_debug_info category, task_name, "env", env_str
|
21
|
+
begin
|
28
22
|
@app.call(env)
|
23
|
+
ensure
|
24
|
+
Perfetto.trace_event_end category
|
29
25
|
end
|
30
26
|
end
|
27
|
+
# rubocop:enable Metrics/MethodLength
|
28
|
+
|
29
|
+
def call(env)
|
30
|
+
@app.call(env) unless Perfetto::Configure.enable_tracing
|
31
|
+
|
32
|
+
perfetto_traced_call(env)
|
33
|
+
end
|
31
34
|
end
|
32
35
|
end
|
data/lib/perfetto/version.rb
CHANGED
data/lib/perfetto.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "json"
|
4
|
+
|
3
5
|
require_relative "perfetto/version"
|
4
6
|
|
5
7
|
require_relative "perfetto/core_ext/configurable"
|
6
8
|
require_relative "perfetto/configure"
|
7
9
|
|
10
|
+
# Rack middleware
|
11
|
+
require_relative "perfetto/middleware"
|
12
|
+
|
8
13
|
# To minimize the overhead of tracing at runtime
|
9
14
|
# we determine whether to enable instrumentations
|
10
15
|
# at the first call to 'setup' method instead of
|
@@ -20,7 +25,5 @@ module Perfetto
|
|
20
25
|
require_relative "perfetto/perfetto"
|
21
26
|
# Instrumentation Helper
|
22
27
|
require_relative "perfetto/interceptor"
|
23
|
-
# Rack middleware
|
24
|
-
require_relative "perfetto/middleware"
|
25
28
|
end
|
26
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perfetto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kowalski Dark
|
@@ -38,7 +38,6 @@ files:
|
|
38
38
|
- lib/perfetto/middleware.rb
|
39
39
|
- lib/perfetto/perfetto.rb
|
40
40
|
- lib/perfetto/version.rb
|
41
|
-
- perfetto.gemspec
|
42
41
|
- sig/perfetto.rbs
|
43
42
|
homepage: https://github.com/yet-another-ai/perfetto.rb
|
44
43
|
licenses: []
|
data/perfetto.gemspec
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "lib/perfetto/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.name = "perfetto"
|
7
|
-
spec.version = Perfetto::VERSION
|
8
|
-
spec.authors = ["Kowalski Dark"]
|
9
|
-
spec.email = ["github@akenonet.com"]
|
10
|
-
|
11
|
-
spec.summary = "Yet another event tracing library for Ruby."
|
12
|
-
spec.description = "Yet another event tracing library for Ruby."
|
13
|
-
spec.homepage = "https://github.com/yet-another-ai/perfetto.rb"
|
14
|
-
spec.required_ruby_version = ">= 3.3.0"
|
15
|
-
|
16
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
17
|
-
|
18
|
-
# Specify which files should be added to the gem when it is released.
|
19
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
20
|
-
spec.files = Dir.chdir(__dir__) do
|
21
|
-
`git ls-files -z`.split("\x0").reject do |f|
|
22
|
-
(File.expand_path(f) == __FILE__) ||
|
23
|
-
f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor Gemfile])
|
24
|
-
end
|
25
|
-
end
|
26
|
-
spec.bindir = "exe"
|
27
|
-
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
28
|
-
spec.require_paths = %w[lib ext]
|
29
|
-
spec.extensions = ["ext/perfetto/extconf.rb"]
|
30
|
-
|
31
|
-
# For more information and examples about making a new gem, check out our
|
32
|
-
# guide at: https://bundler.io/guides/creating_gem.html
|
33
|
-
spec.metadata["rubygems_mfa_required"] = "true"
|
34
|
-
end
|