rails_tracepoint_stack 0.3.3 → 0.3.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37171281cd058faf3a6dadf86d4a2e56e57417f1ccf46af6d010a2a1f5657562
4
- data.tar.gz: 7bc1956035baaf3308ed562024c7376eb59a6c6bb59e23e450a66f51e2b2d650
3
+ metadata.gz: a3045ee154f570e6a780af9aff0edfcd18822b3394a0f268ee9a4e07e6d5769f
4
+ data.tar.gz: 9865f094f0a70ffcb474148aaab7ee6712ac63450326bf7e3385dfc55e1c123f
5
5
  SHA512:
6
- metadata.gz: 0f452899bde414b1a11dce5fd483843b980629c1dad42aa73b045c9c3315dd9226b36cd98f47b8a5c11221aed26d2aaf62c87fd294a07145936a100c164f3a07
7
- data.tar.gz: 37fb83da7315e329a9d75ad32ca198c7464be7aadead056abd19f0a1ad3190e859c0d4c4bb47572a0755cb259349b45bd3984ec50ef74ece89a843aa4f2d5c52
6
+ metadata.gz: 6c5482941d4e5119b88133eca986cdb87c490d0ed6e69ed0df5a09ebe1d2efebff0c4abbf9b554abf44cbab80038b96b3bf53cb8c86b1052b967d7ad307573d8
7
+ data.tar.gz: 699757a6965a6101ee9b80e5039580840a5e34de1271538a286d95c6ea5d2f0e678e666c8f098b2a93df5896868fc821182258f4d07616684bace6857087e7b8
@@ -0,0 +1,19 @@
1
+ module RailsTracepointStack
2
+ module Filter
3
+ module CustomTraceSelectorFilter
4
+ def is_a_trace_required_to_watch_by_the_custom_configs?(trace:)
5
+ return false unless RailsTracepointStack.configuration.file_path_to_filter_patterns.any?
6
+
7
+ !filter_match_a_custom_pattern_to_be_not_ignored?(trace)
8
+ end
9
+
10
+ private
11
+
12
+ def filter_match_a_custom_pattern_to_be_not_ignored?(trace)
13
+ RailsTracepointStack.configuration.file_path_to_filter_patterns.any? do |pattern|
14
+ trace.file_path.match?(pattern)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,42 @@
1
+ require 'rails_tracepoint_stack/filter/gem_path'
2
+ require 'rails_tracepoint_stack/filter/rb_config'
3
+
4
+ module RailsTracepointStack
5
+ module Filter
6
+ module TraceFromDependenciesFilter
7
+ def should_ignore_because_is_a_internal_dependency?(trace:)
8
+ return false if not_ignore_external_source_traces?
9
+
10
+ file_path_starts_with_gem_path?(trace) ||
11
+ file_path_starts_with_ruby_lib_path?(trace) ||
12
+ file_path_include_bundler_gems_path?(trace)
13
+ end
14
+
15
+ private
16
+
17
+ def file_path_starts_with_gem_path?(trace)
18
+ gem_paths.any? { |path| trace.file_path.start_with?(path) }
19
+ end
20
+
21
+ def file_path_starts_with_ruby_lib_path?(trace)
22
+ trace.file_path.start_with?(ruby_lib_path)
23
+ end
24
+
25
+ def file_path_include_bundler_gems_path?(trace)
26
+ trace.file_path.include?("gems/bundler")
27
+ end
28
+
29
+ def gem_paths
30
+ @gem_paths ||= RailsTracepointStack::Filter::GemPath.full_gem_path
31
+ end
32
+
33
+ def ruby_lib_path
34
+ @ruby_lib_path ||= RailsTracepointStack::Filter::RbConfig.ruby_lib_path
35
+ end
36
+
37
+ def not_ignore_external_source_traces?
38
+ RailsTracepointStack.configuration.log_external_sources
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,17 @@
1
+ module RailsTracepointStack
2
+ module Filter
3
+ module TraceFromRubyCodeFilter
4
+ def should_ignore_because_is_ruby_trace?(trace:)
5
+ return false if not_ignore_external_source_traces?
6
+
7
+ trace.file_path.start_with?('<internal:') || trace.file_path == '(eval)'
8
+ end
9
+
10
+ private
11
+
12
+ def not_ignore_external_source_traces?
13
+ RailsTracepointStack.configuration.log_external_sources
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ module RailsTracepointStack
2
+ module Filter
3
+ module TraceToIgnoreFilter
4
+ def attends_some_custom_pattern_to_ignore?(trace:)
5
+ return false unless RailsTracepointStack.configuration.ignore_patterns.any?
6
+
7
+ RailsTracepointStack
8
+ .configuration
9
+ .ignore_patterns
10
+ .any? { |pattern| trace.file_path.match?(pattern) }
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,63 +1,30 @@
1
- require 'rails_tracepoint_stack/filter/gem_path'
2
- require 'rails_tracepoint_stack/filter/rb_config'
1
+ require 'rails_tracepoint_stack/filter/custom_trace_selector_filter'
2
+ require 'rails_tracepoint_stack/filter/trace_from_dependencies_filter'
3
+ require 'rails_tracepoint_stack/filter/trace_from_ruby_code_filter'
4
+ require 'rails_tracepoint_stack/filter/trace_to_ignore_filter'
3
5
 
4
6
  module RailsTracepointStack
5
- class TraceFilter
6
- def self.ignore_trace?(trace:)
7
- if defined_file_path_to_filter_patterns?
8
- not_matches_file_path_to_filter_patterns?(trace)
9
- else
10
- contains_to_ignore_strings?(trace) || from_gempath_or_lib_path?(trace) || is_a_to_ignore_pattern?(trace)
7
+ module TraceFilter
8
+ include RailsTracepointStack::Filter::CustomTraceSelectorFilter
9
+ include RailsTracepointStack::Filter::TraceFromDependenciesFilter
10
+ include RailsTracepointStack::Filter::TraceFromRubyCodeFilter
11
+ include RailsTracepointStack::Filter::TraceToIgnoreFilter
12
+
13
+ def ignore_trace?(trace:)
14
+ if attends_some_custom_pattern_to_ignore?(trace: trace)
15
+ return true
11
16
  end
12
- end
13
-
14
- private
15
-
16
- def self.contains_to_ignore_strings?(trace)
17
- trace.file_path.start_with?('<internal:') || trace.file_path == '(eval)'
18
- end
19
-
20
- def self.from_gempath_or_lib_path?(trace)
21
- !RailsTracepointStack.configuration&.log_external_sources &&
22
- (
23
- file_path_starts_with_gem_path?(trace) ||
24
- file_path_starts_with_ruby_lib_path?(trace) ||
25
- file_path_starts_with_bundler_path?(trace)
26
- )
27
- end
28
-
29
- def self.is_a_to_ignore_pattern?(trace)
30
- RailsTracepointStack.configuration&.ignore_patterns&.any? { |pattern| trace.file_path.match?(pattern) }
31
- end
32
-
33
- def self.file_path_starts_with_gem_path?(trace)
34
- gem_paths.any? { |path| trace.file_path.start_with?(path) }
35
- end
36
-
37
- def self.file_path_starts_with_ruby_lib_path?(trace)
38
- trace.file_path.start_with?(ruby_lib_path)
39
- end
40
-
41
- def self.file_path_starts_with_bundler_path?(trace)
42
- trace.file_path.include?("gems/bundler")
43
- end
44
-
45
- def self.gem_paths
46
- @gem_paths ||= RailsTracepointStack::Filter::GemPath.full_gem_path
47
- end
48
-
49
- def self.ruby_lib_path
50
- @ruby_lib_path ||= RailsTracepointStack::Filter::RbConfig.ruby_lib_path
51
- end
52
-
53
- def self.defined_file_path_to_filter_patterns?
54
- RailsTracepointStack.configuration&.file_path_to_filter_patterns&.any?
55
- end
56
-
57
- def self.not_matches_file_path_to_filter_patterns?(trace)
58
- !RailsTracepointStack.configuration.file_path_to_filter_patterns.any? do |pattern|
59
- trace.file_path.match?(pattern)
17
+ if is_a_trace_required_to_watch_by_the_custom_configs?(trace: trace)
18
+ return false
60
19
  end
20
+ if should_ignore_because_is_a_internal_dependency?(trace: trace)
21
+ return true
22
+ end
23
+ if should_ignore_because_is_ruby_trace?(trace: trace)
24
+ return true
25
+ end
26
+
27
+ return false
61
28
  end
62
29
  end
63
30
  end
@@ -6,12 +6,13 @@ require 'rails_tracepoint_stack/log_formatter'
6
6
 
7
7
  module RailsTracepointStack
8
8
  class Tracer
9
+ include RailsTracepointStack::TraceFilter
9
10
  # TODO: Tracer.new shoud return the tracer. Is weird to call Tracer.new.tracer
10
11
  def tracer
11
12
  @tracer ||= TracePoint.new(:call) do |tracepoint|
12
13
  trace = RailsTracepointStack::Trace.new(trace_point: tracepoint)
13
14
 
14
- next if RailsTracepointStack::TraceFilter.ignore_trace?(trace: trace)
15
+ next if ignore_trace?(trace: trace)
15
16
 
16
17
  # TODO: Use proper OO
17
18
  message = RailsTracepointStack::LogFormatter.message trace
@@ -1,3 +1,3 @@
1
1
  module RailsTracepointStack
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.4"
3
3
  end
@@ -1,4 +1,3 @@
1
- require 'json'
2
1
  require 'rails_tracepoint_stack/configuration'
3
2
  require 'rails_tracepoint_stack/log_formatter'
4
3
  require 'rails_tracepoint_stack/tracer'
@@ -7,11 +6,14 @@ $rails_tracer_rtps = nil
7
6
 
8
7
  module RailsTracepointStack
9
8
  class << self
10
- attr_accessor :configuration, :logger
9
+ attr_writer :configuration, :logger
10
+
11
+ def configuration
12
+ @configuration ||= RailsTracepointStack::Configuration.new
13
+ end
11
14
  end
12
15
 
13
16
  def self.configure
14
- self.configuration ||= RailsTracepointStack::Configuration.new
15
17
  yield(configuration)
16
18
  end
17
19
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_tracepoint_stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Daniel Pohlod
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-24 00:00:00.000000000 Z
11
+ date: 2024-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -60,8 +60,12 @@ extra_rdoc_files: []
60
60
  files:
61
61
  - lib/rails_tracepoint_stack.rb
62
62
  - lib/rails_tracepoint_stack/configuration.rb
63
+ - lib/rails_tracepoint_stack/filter/custom_trace_selector_filter.rb
63
64
  - lib/rails_tracepoint_stack/filter/gem_path.rb
64
65
  - lib/rails_tracepoint_stack/filter/rb_config.rb
66
+ - lib/rails_tracepoint_stack/filter/trace_from_dependencies_filter.rb
67
+ - lib/rails_tracepoint_stack/filter/trace_from_ruby_code_filter.rb
68
+ - lib/rails_tracepoint_stack/filter/trace_to_ignore_filter.rb
65
69
  - lib/rails_tracepoint_stack/log_formatter.rb
66
70
  - lib/rails_tracepoint_stack/logger.rb
67
71
  - lib/rails_tracepoint_stack/trace.rb