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