trace_viz 0.0.1 → 1.0.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/CONTRIBUTING.md +34 -0
- data/README.md +134 -39
- data/Steepfile +34 -0
- data/examples/eu_central_bank.rb +69 -0
- data/examples/example.cast +189 -0
- data/examples/example.rb +94 -23
- data/lib/trace_viz/adapters/base_adapter.rb +23 -2
- data/lib/trace_viz/adapters/trace_point_adapter.rb +10 -11
- data/lib/trace_viz/collectors/base_collector.rb +90 -0
- data/lib/trace_viz/collectors/filters/base_class_filter.rb +29 -0
- data/lib/trace_viz/collectors/filters/base_exclude_filter.rb +16 -0
- data/lib/trace_viz/collectors/filters/base_filter.rb +17 -0
- data/lib/trace_viz/collectors/filters/base_include_filter.rb +16 -0
- data/lib/trace_viz/collectors/filters/exclude_classes_filter.rb +15 -0
- data/lib/trace_viz/collectors/filters/exclude_default_classes_filter.rb +34 -0
- data/lib/trace_viz/collectors/filters/exclude_gems_filter.rb +30 -0
- data/lib/trace_viz/collectors/filters/exclude_internal_call_filter.rb +31 -0
- data/lib/trace_viz/collectors/filters/exclude_rails_framework_filter.rb +38 -0
- data/lib/trace_viz/collectors/filters/include_classes_filter.rb +15 -0
- data/lib/trace_viz/collectors/filters/include_gems_filter.rb +54 -0
- data/lib/trace_viz/collectors/filters/registry.rb +59 -0
- data/lib/trace_viz/collectors/hierarchy_linker.rb +30 -0
- data/lib/trace_viz/collectors/matchers/base_matcher.rb +13 -0
- data/lib/trace_viz/collectors/matchers/trace_point_action_matcher.rb +38 -0
- data/lib/trace_viz/collectors/matchers/within_depth_matcher.rb +26 -0
- data/lib/trace_viz/collectors/steps/assign_depth_for_call_step.rb +30 -0
- data/lib/trace_viz/collectors/steps/assign_depth_for_return_step.rb +39 -0
- data/lib/trace_viz/collectors/steps/base_step.rb +27 -0
- data/lib/trace_viz/collectors/steps/build_hierarchy_step.rb +32 -0
- data/lib/trace_viz/collectors/steps/hidden_step.rb +25 -0
- data/lib/trace_viz/collectors/steps/linking_step.rb +36 -0
- data/lib/trace_viz/collectors/steps/validation_step.rb +33 -0
- data/lib/trace_viz/collectors/steps.rb +10 -0
- data/lib/trace_viz/collectors/trace_pipeline.rb +26 -0
- data/lib/trace_viz/collectors/trace_pipeline_builder.rb +29 -0
- data/lib/trace_viz/collectors/trace_point_collector.rb +41 -0
- data/lib/trace_viz/collectors/trace_stats.rb +21 -0
- data/lib/trace_viz/config/copier.rb +38 -0
- data/lib/trace_viz/config/validator.rb +75 -0
- data/lib/trace_viz/configuration.rb +36 -30
- data/lib/trace_viz/context/config_context.rb +1 -1
- data/lib/trace_viz/context/manager.rb +17 -21
- data/lib/trace_viz/context/map.rb +29 -0
- data/lib/trace_viz/context/registry.rb +37 -0
- data/lib/trace_viz/context/tracking/active_calls.rb +37 -0
- data/lib/trace_viz/context/tracking_context.rb +11 -2
- data/lib/trace_viz/context.rb +2 -2
- data/lib/trace_viz/core/tracer.rb +3 -0
- data/lib/trace_viz/defaults/actions.rb +84 -0
- data/lib/trace_viz/defaults/colors.rb +61 -0
- data/lib/trace_viz/defaults/config.rb +89 -0
- data/lib/trace_viz/defaults/themes.rb +66 -0
- data/lib/trace_viz/defaults.rb +20 -0
- data/lib/trace_viz/exporters/base_exporter.rb +81 -0
- data/lib/trace_viz/exporters/export_manager.rb +33 -0
- data/lib/trace_viz/exporters/registry.rb +25 -0
- data/lib/trace_viz/exporters/text_exporter.rb +37 -0
- data/lib/trace_viz/formatters/base_formatter.rb +15 -0
- data/lib/trace_viz/formatters/export/base_formatter.rb +12 -0
- data/lib/trace_viz/formatters/export/formatter_factory.rb +27 -0
- data/lib/trace_viz/formatters/export/method_call_formatter.rb +21 -0
- data/lib/trace_viz/formatters/export/method_return_formatter.rb +22 -0
- data/lib/trace_viz/formatters/export/summary_group_formatter.rb +35 -0
- data/lib/trace_viz/formatters/helpers/depth_helper.rb +15 -0
- data/lib/trace_viz/formatters/helpers/indent_helper.rb +15 -0
- data/lib/trace_viz/formatters/helpers/log/color_helper.rb +23 -0
- data/lib/trace_viz/formatters/helpers/log/depth_helper.rb +22 -0
- data/lib/trace_viz/formatters/helpers/log/method_name_helper.rb +29 -0
- data/lib/trace_viz/formatters/helpers/log/params_helper.rb +51 -0
- data/lib/trace_viz/formatters/helpers/log/result_helper.rb +27 -0
- data/lib/trace_viz/formatters/helpers/log/summary/params_helper.rb +53 -0
- data/lib/trace_viz/formatters/helpers/method_details_helper.rb +15 -0
- data/lib/trace_viz/formatters/helpers/params_helper.rb +43 -0
- data/lib/trace_viz/formatters/helpers/result_helper.rb +21 -0
- data/lib/trace_viz/formatters/helpers/source_helper.rb +22 -0
- data/lib/trace_viz/formatters/helpers/summary/params_helper.rb +41 -0
- data/lib/trace_viz/formatters/helpers/summary/source_helper.rb +24 -0
- data/lib/trace_viz/formatters/helpers/time_helper.rb +15 -0
- data/lib/trace_viz/formatters/helpers.rb +10 -0
- data/lib/trace_viz/formatters/log/base_formatter.rb +13 -0
- data/lib/trace_viz/formatters/log/formatter_factory.rb +27 -0
- data/lib/trace_viz/formatters/log/method_call_formatter.rb +34 -0
- data/lib/trace_viz/formatters/log/method_return_formatter.rb +24 -0
- data/lib/trace_viz/formatters/log/summary_group_formatter.rb +40 -0
- data/lib/trace_viz/formatters/log/verbose_formatter.rb +14 -0
- data/lib/trace_viz/formatters/trace_data_formatter.rb +24 -0
- data/lib/trace_viz/helpers/config_helper.rb +13 -0
- data/lib/trace_viz/helpers/trace_point/param_helper.rb +98 -0
- data/lib/trace_viz/helpers/tracking_helper.rb +26 -0
- data/lib/trace_viz/helpers.rb +9 -0
- data/lib/trace_viz/logger.rb +28 -49
- data/lib/trace_viz/loggers/base_logger.rb +29 -0
- data/lib/trace_viz/loggers/log_level_resolver.rb +18 -0
- data/lib/trace_viz/loggers/logging_manager.rb +46 -0
- data/lib/trace_viz/loggers/post_collection_logger.rb +39 -0
- data/lib/trace_viz/loggers/trace_logger.rb +37 -0
- data/lib/trace_viz/loggers/trace_stats_logger.rb +47 -0
- data/lib/trace_viz/renderers/base_renderer.rb +24 -0
- data/lib/trace_viz/renderers/render_context.rb +18 -0
- data/lib/trace_viz/renderers/renderer_factory.rb +41 -0
- data/lib/trace_viz/renderers/summary/node_processor.rb +82 -0
- data/lib/trace_viz/renderers/summary_renderer.rb +22 -0
- data/lib/trace_viz/renderers/verbose_renderer.rb +29 -0
- data/lib/trace_viz/shared/renderer_helper.rb +46 -0
- data/lib/trace_viz/shared.rb +8 -0
- data/lib/trace_viz/trace_data/base.rb +49 -0
- data/lib/trace_viz/trace_data/node.rb +33 -0
- data/lib/trace_viz/trace_data/root_node.rb +20 -0
- data/lib/trace_viz/trace_data/summary_node.rb +49 -0
- data/lib/trace_viz/trace_data/trace_point/base.rb +59 -0
- data/lib/trace_viz/trace_data/trace_point/method_call.rb +47 -0
- data/lib/trace_viz/trace_data/trace_point/method_return.rb +45 -0
- data/lib/trace_viz/trace_data/trace_point_builder.rb +23 -0
- data/lib/trace_viz/traits/depth_trackable.rb +13 -0
- data/lib/trace_viz/traits/identifiable.rb +25 -0
- data/lib/trace_viz/traits/time_trackable.rb +13 -0
- data/lib/trace_viz/traits.rb +10 -0
- data/lib/trace_viz/utils/colorize.rb +12 -23
- data/lib/trace_viz/utils/format_utils/key_value_formatter.rb +37 -0
- data/lib/trace_viz/utils/format_utils/value_truncator.rb +74 -0
- data/lib/trace_viz/utils/format_utils.rb +24 -0
- data/lib/trace_viz/utils/id_generator.rb +35 -0
- data/lib/trace_viz/version.rb +1 -1
- data/sig/adapters/base_adapter.rbs +11 -0
- data/sig/adapters/trace_point_adapter.rbs +13 -0
- data/sig/collectors/filters/registry.rbs +13 -0
- data/sig/collectors/trace_point_collector.rbs +17 -0
- data/sig/config/copier.rbs +15 -0
- data/sig/config/validator.rbs +18 -0
- data/sig/configuration.rbs +22 -0
- data/sig/context/base_context.rbs +9 -0
- data/sig/context/config_context.rbs +13 -0
- data/sig/context/manager.rbs +10 -0
- data/sig/context/map.rbs +13 -0
- data/sig/context.rbs +5 -0
- data/sig/core/tracer.rbs +7 -0
- data/sig/core.rbs +4 -0
- data/sig/defaults.rbs +17 -0
- data/sig/errors.rbs +13 -0
- data/sig/logger.rbs +33 -0
- data/sig/trace_viz.rbs +1 -2
- data/sig/utils/colorize.rbs +8 -0
- data/sig/utils/format_utils/key_value_formatter.rbs +16 -0
- data/sig/utils/format_utils/value_truncator.rbs +19 -0
- data/sig/utils/format_utils.rbs +8 -0
- data/sig/version.rbs +3 -0
- metadata +140 -16
- data/lib/trace_viz/adapters/trace_point/depth_manager.rb +0 -34
- data/lib/trace_viz/adapters/trace_point/event_handler.rb +0 -36
- data/lib/trace_viz/adapters/trace_point/trace_data.rb +0 -89
- data/lib/trace_viz/adapters/trace_point/trace_formatter.rb +0 -95
- data/lib/trace_viz/adapters/trace_point/trace_logger.rb +0 -44
- data/lib/trace_viz/context/manager/context_map.rb +0 -31
- data/lib/trace_viz/context/manager/context_operations.rb +0 -60
- data/lib/trace_viz/context/manager/context_registry.rb +0 -20
- data/lib/trace_viz/context/manager/context_validation.rb +0 -34
@@ -0,0 +1,189 @@
|
|
1
|
+
{"version": 2, "width": 242, "height": 70, "timestamp": 1735967500, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}}
|
2
|
+
[0.292339, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
|
3
|
+
[0.292893, "o", "\u001b]2;patrick204nqh@Patrick-Mac:~/Desktop/sandbox/trace_viz\u0007\u001b]1;..box/trace_viz\u0007"]
|
4
|
+
[0.294703, "o", "\u001b]7;file://Patrick-Mac.local/Users/patrick204nqh/Desktop/sandbox/trace_viz\u001b\\"]
|
5
|
+
[0.381608, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
6
|
+
[0.381699, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
|
7
|
+
[0.43318, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
8
|
+
[0.559615, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
9
|
+
[0.608213, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [⇡?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
10
|
+
[0.751751, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [⇡?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
11
|
+
[1.032449, "o", "\u001b[H\u001b[2J\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [⇡?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
12
|
+
[1.887263, "o", "n"]
|
13
|
+
[1.897704, "o", "\b\u001b[1m\u001b[31mn\u001b[0m\u001b[39m"]
|
14
|
+
[1.898063, "o", "\b\u001b[1m\u001b[31mn\u001b[0m\u001b[39m\u001b[90mpm update\u001b[39m\u001b[9D"]
|
15
|
+
[2.74247, "o", "\b\u001b[0m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[10D"]
|
16
|
+
[3.18342, "o", "b"]
|
17
|
+
[3.189119, "o", "\b\u001b[4mb\u001b[24m"]
|
18
|
+
[3.189374, "o", "\b\u001b[4mb\u001b[24m\u001b[90mat tmp/trace_output.txt\u001b[39m\u001b[23D"]
|
19
|
+
[3.319126, "o", "\b\u001b[4mb\u001b[39m\u001b[4ma\u001b[24m"]
|
20
|
+
[3.32368, "o", "\b\b\u001b[24m\u001b[1m\u001b[31mb\u001b[24m\u001b[1m\u001b[31ma\u001b[0m\u001b[39m"]
|
21
|
+
[3.554232, "o", "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31ma\u001b[1m\u001b[31mt\u001b[0m\u001b[39m"]
|
22
|
+
[3.556947, "o", "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32ma\u001b[0m\u001b[32mt\u001b[39m"]
|
23
|
+
[3.810466, "o", "\b\u001b[32mt\u001b[32m \u001b[39m"]
|
24
|
+
[3.812702, "o", "\b\b\u001b[32mt\u001b[39m\u001b[39m "]
|
25
|
+
[4.123578, "o", "\u001b[39me\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[19D"]
|
26
|
+
[4.127925, "o", "\b\u001b[4me\u001b[24m"]
|
27
|
+
[4.128251, "o", "\u001b[90mxamples/eu_central_bank.rb\u001b[39m\u001b[26D"]
|
28
|
+
[4.385978, "o", "\b\u001b[4me\u001b[39m\u001b[4mx\u001b[24m"]
|
29
|
+
[4.511367, "o", "\b\u001b[4mx\u001b[39m\u001b[4ma\u001b[24m"]
|
30
|
+
[4.894204, "o", "\u001b[39mm\u001b[39mp\u001b[39ml\u001b[39me\u001b[39ms\u001b[39m/\u001b[39me\u001b[39mu\u001b[39m_\u001b[39mc\u001b[39me\u001b[39mn\u001b[39mt\u001b[39mr\u001b[39ma\u001b[39ml\u001b[39m_\u001b[39mb\u001b[39ma\u001b[39mn\u001b[39mk\u001b[39m.\u001b[39mr\u001b[39mb"]
|
31
|
+
[4.897206, "o", "\u001b[25D\u001b[4ma\u001b[4mm\u001b[4mp\u001b[4ml\u001b[4me\u001b[4ms\u001b[4m/\u001b[4me\u001b[4mu\u001b[4m_\u001b[4mc\u001b[4me\u001b[4mn\u001b[4mt\u001b[4mr\u001b[4ma\u001b[4ml\u001b[4m_\u001b[4mb\u001b[4ma\u001b[4mn\u001b[4mk\u001b[4m.\u001b[4mr\u001b[4mb\u001b[24m"]
|
32
|
+
[5.481568, "o", "\u001b[?1l\u001b>"]
|
33
|
+
[5.481772, "o", "\u001b[?2004l"]
|
34
|
+
[5.484482, "o", "\r\r\n"]
|
35
|
+
[5.485428, "o", "\u001b]2;bat examples/eu_central_bank.rb\u0007\u001b]1;bat\u0007"]
|
36
|
+
[5.535269, "o", "\u001b[?1049h\u001b[?1h\u001b=\r\u001b[38;5;238m───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n \u001b[38;5;238m│ \u001b[0mFile: \u001b[1mexamples/eu_central_bank.rb\u001b[0m\u001b[m\r\n\u001b[38;5;238m───────┼───────────────────────────────────────────────────"]
|
37
|
+
[5.535356, "o", "───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n\u001b[38;5;238m 1\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;246;170;17m$\u001b[0m\u001b[38;2;255;255;255mLOAD_PATH\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242munshift\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;102;217;239mFile\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mexpand_path\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;230;219;116m../lib\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239m__dir__\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;2"]
|
38
|
+
[5.535473, "o", "5"]
|
39
|
+
[5.535549, "o", "5;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 2\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mrequire\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;230;219;116meu_central_bank\u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[m\r\n\u001b[38;5;238m 3\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mrequire\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;230;219;116mi18n\u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[m\r\n\u001b[38;5;238m 4\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mrequire\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;230;219;116mtrace_viz\u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[m\r\n\u001b[38;5;238m 5\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 6\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m Fix the locale issue\u001b[0m\u001b[m\r\n\u001b[38;5;238m 7\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;102;217;239mI18n\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mconfig\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mavailable_locales \u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m[\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128men\u001b[0m\u001b[38;2;2"]
|
40
|
+
[5.535691, "o", "48;248;242m]\u001b[0m\u001b[m\r\n\u001b[38;5;238m 8\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;102;217;239mI18n\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mlocale \u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128men\u001b[0m\u001b[m\r\n\u001b[38;5;238m 9\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 10\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;102;217;239mTraceViz\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mtrace\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[m\r\n\u001b[38;5;238m 11\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mgeneral\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n\u001b[38;5;238m 12\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mtab_size\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m1\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 13\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mmode\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128msummary\u001b[0m\u001b[38;2;248;"]
|
41
|
+
[5.535767, "o", "248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 14\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow_indent\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 15\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow_depth\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 16\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mmax_display_depth\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m5\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 17\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow_method_name\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 18\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 19\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;"]
|
42
|
+
[5.535826, "o", "242m \u001b[0m\u001b[38;2;246;240;128mparams\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n\u001b[38;5;238m 20\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 21\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mmode\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128mname_only\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 22\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m truncate_length: 10\u001b[0m\u001b[m\r\n\u001b[38;5;238m 23\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 24\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mresult\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n\u001b[38;5;238m 25\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;"]
|
43
|
+
[5.535847, "o", "248;242m \u001b[0m\u001b[38"]
|
44
|
+
[5.535899, "o", ";2;246;240;128mshow\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 26\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mtruncate_length\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m15\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 27\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 28\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128msource_location\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n\u001b[38;5;238m 29\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 30\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mtruncate_length\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m50\u001b[0m\u001b[38;2;248;"]
|
45
|
+
[5.535962, "o", "248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 31\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 32\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mexecution\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n\u001b[38;5;238m 33\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow_time\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 34\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow_trace_events\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m[\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128mcall\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128mreturn\u001b[0m\u001b[38;2;248;248;242m]\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 35\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38"]
|
46
|
+
[5.536019, "o", ";5;238m "]
|
47
|
+
[5.536121, "o", "36\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mlog\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n\u001b[38;5;238m 37\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mruntime\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mfalse\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 38\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mpost_collection\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 39\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mstats\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[m\r\n\u001b[38;5;238m 40\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 41\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mfilters\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;2"]
|
48
|
+
[5.536174, "o", "42m[\u001b[0m\u001b[m\r\n\u001b[38;5;238m 42\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128mexclude_internal_call\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 43\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128mexclude_default_classes\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 44\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m include_classes: {\u001b[0m\u001b[m\r\n\u001b[38;5;238m 45\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m classes: [EuCentralBank],\u001b[0m\u001b[m\r\n\u001b[38;5;238m 46\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m },\u001b[0m\u001b[m\r\n\u001b[38;5;238m 47\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m exclude_classes: {\u001b[0m\u001b[m\r\n\u001b[38;5;238m 48\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m classes: ['Gem']\u001b[0m\u001b[m\r\n\u001b"]
|
49
|
+
[5.536204, "o", "[38;5;238m "]
|
50
|
+
[5.536245, "o", " 49\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m },\u001b[0m\u001b[m\r\n\u001b[38;5;238m 50\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mexclude_gems\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n\u001b[38;5;238m 51\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mgems\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m[\u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;230;219;116mnokogiri\u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;230;219;116mmoney\u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;230;219;116mi18n\u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;248;248;242m]\u001b[0m\u001b[m\r\n\u001b[38;5;238m 52\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[m\r\n\u001b[38;5;238m 53\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m]\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b"]
|
51
|
+
[5.53628, "o", "[38;5;238m 54\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mexport\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n\u001b[38;5;238m 55\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128menabled\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 56\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mformat\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128mtxt\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 57\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128moverwrite\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n\u001b[38;5;238m 58\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[m\r\n\u001b[38;5;238m 59\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mdo\u001b[0m\u001b[m\r\n\u001b[38;5;238"]
|
52
|
+
[5.536335, "o", "m 60\u001b[0m"]
|
53
|
+
[5.536397, "o", " \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m Create a new instance of the EuCentralBank\u001b[0m\u001b[m\r\n\u001b[38;5;238m 61\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m bank \u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239mEuCentralBank\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;166;226;46mnew\u001b[0m\u001b[m\r\n\u001b[38;5;238m 62\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 63\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m Trace the update of exchange rates\u001b[0m\u001b[m\r\n\u001b[38;5;238m 64\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m bank\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mupdate_rates\u001b[0m\u001b[m\r\n\u001b[38;5;238m 65\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 66\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m Trace conversion of currency\u001b[0m\u001b[m\r\n:\u001b[K"]
|
54
|
+
[6.883177, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
|
55
|
+
[6.883281, "o", "\u001b[38;5;238m 67\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m result \u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;248;248;242m bank\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mexchange\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;190;132;255m50\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;230;219;116mUSD\u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;230;219;116mEUR\u001b[0m\u001b[38;2;249;38;114m'\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n:\u001b[K"]
|
56
|
+
[6.929984, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 68\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239mputs\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;230;219;116mConverted amount: \u001b[0m\u001b[38;2;248;248;242m#{\u001b[0m\u001b[38;2;248;248;242mresult\u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[m\r\n:\u001b[K"]
|
57
|
+
[6.982182, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
|
58
|
+
[6.982602, "o", "\u001b[38;5;238m 69\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n:\u001b[K"]
|
59
|
+
[7.040028, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
|
60
|
+
[7.040124, "o", "\u001b[38;5;238m───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n:\u001b[K"]
|
61
|
+
[7.096966, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u0007\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
62
|
+
[7.155845, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
63
|
+
[7.232304, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
64
|
+
[7.297116, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u0007\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
65
|
+
[7.373575, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
66
|
+
[7.413188, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
67
|
+
[7.472814, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
68
|
+
[7.514732, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
69
|
+
[7.546937, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
70
|
+
[7.563359, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
71
|
+
[7.597565, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
72
|
+
[7.614445, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
|
73
|
+
[7.614539, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
74
|
+
[7.638313, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
75
|
+
[7.656177, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
76
|
+
[7.672448, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
|
77
|
+
[7.672519, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
78
|
+
[7.697407, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
79
|
+
[7.721632, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
80
|
+
[7.756171, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
81
|
+
[7.780013, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
82
|
+
[7.822717, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
83
|
+
[7.863136, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
84
|
+
[7.93099, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
85
|
+
[8.013234, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
86
|
+
[8.324059, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
|
87
|
+
[8.324205, "o", "\u0007\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
|
88
|
+
[8.634534, "o", "\r\u001b[K\u001b[?1l\u001b>\u001b[?1049l"]
|
89
|
+
[8.637498, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
|
90
|
+
[8.637791, "o", "\u001b]2;patrick204nqh@Patrick-Mac:~/Desktop/sandbox/trace_viz\u0007\u001b]1;..box/trace_viz\u0007"]
|
91
|
+
[8.642929, "o", "\u001b]7;file://Patrick-Mac.local/Users/patrick204nqh/Desktop/sandbox/trace_viz\u001b\\"]
|
92
|
+
[8.741206, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mtook \u001b[0m\u001b[1m\u001b[33m3.2s\u001b[0m\u001b[33m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
93
|
+
[8.741299, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
|
94
|
+
[8.792386, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mtook \u001b[0m\u001b[1m\u001b[33m3.2s\u001b[0m\u001b[33m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
95
|
+
[8.91581, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1mtook \u001b[0m\u001b[1m\u001b[33m3.2s\u001b[0m\u001b[33m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
96
|
+
[8.970422, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [⇡?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1mtook \u001b[0m\u001b[1m\u001b[33m3.2s\u001b[0m\u001b[33m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
97
|
+
[9.111812, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [⇡?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1mtook \u001b[0m\u001b[1m\u001b[33m3.2s\u001b[0m\u001b[33m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
98
|
+
[9.725681, "o", "r"]
|
99
|
+
[9.728399, "o", "\b\u001b[32mr\u001b[39m"]
|
100
|
+
[9.729089, "o", "\b\u001b[32mr\u001b[39m\u001b[90muby examples/eu_central_bank.rb\u001b[39m\u001b[31D"]
|
101
|
+
[9.82513, "o", "\b\u001b[32mr\u001b[32mu\u001b[39m"]
|
102
|
+
[9.830346, "o", "\b\b\u001b[1m\u001b[31mr\u001b[1m\u001b[31mu\u001b[0m\u001b[39m"]
|
103
|
+
[9.988699, "o", "\b\b\u001b[1m\u001b[31mr\u001b[1m\u001b[31mu\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"]
|
104
|
+
[10.09082, "o", "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31my\u001b[0m\u001b[39m"]
|
105
|
+
[10.091809, "o", "\b\b\b\b\u001b[0m\u001b[32mr\u001b[0m\u001b[32mu\u001b[0m\u001b[32mb\u001b[0m\u001b[32my\u001b[39m"]
|
106
|
+
[10.78011, "o", "\u001b[39m \u001b[39me\u001b[39mx\u001b[39ma\u001b[39mm\u001b[39mp\u001b[39ml\u001b[39me\u001b[39ms\u001b[39m/\u001b[39me\u001b[39mu\u001b[39m_\u001b[39mc\u001b[39me\u001b[39mn\u001b[39mt\u001b[39mr\u001b[39ma\u001b[39ml\u001b[39m_\u001b[39mb\u001b[39ma\u001b[39mn\u001b[39mk\u001b[39m.\u001b[39mr\u001b[39mb"]
|
107
|
+
[10.781317, "o", "\u001b[27D\u001b[4me\u001b[4mx\u001b[4ma\u001b[4mm\u001b[4mp\u001b[4ml\u001b[4me\u001b[4ms\u001b[4m/\u001b[4me\u001b[4mu\u001b[4m_\u001b[4mc\u001b[4me\u001b[4mn\u001b[4mt\u001b[4mr\u001b[4ma\u001b[4ml\u001b[4m_\u001b[4mb\u001b[4ma\u001b[4mn\u001b[4mk\u001b[4m.\u001b[4mr\u001b[4mb\u001b[24m"]
|
108
|
+
[11.473352, "o", "\u001b[?1l\u001b>"]
|
109
|
+
[11.473406, "o", "\u001b[?2004l"]
|
110
|
+
[11.474614, "o", "\r\r\n"]
|
111
|
+
[11.475448, "o", "\u001b]2;ruby examples/eu_central_bank.rb\u0007\u001b]1;ruby\u0007"]
|
112
|
+
[12.525471, "o", "[WARNING] The default rounding mode will change from `ROUND_HALF_EVEN` to `ROUND_HALF_UP` in the next major release. Set it explicitly using `Money.rounding_mode=` to avoid potential problems.\r\n"]
|
113
|
+
[12.526926, "o", "[DEPRECATION] You are using the default localization behaviour that will change in the next major release. Find out more - https://github.com/RubyMoney/money#deprecation\r\n"]
|
114
|
+
[12.536495, "o", "Converted amount: 0,49\r\n"]
|
115
|
+
[12.538476, "o", "\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m0\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33minitialize\u001b[0m \u001b[38;5;240mat .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:27\u001b[0m (\u001b[38;5;166mst\u001b[0m, \u001b[38;5;166mblock\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230mnil\u001b[0m \u001b[38;5;37min 0.000112ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m0\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mupdate_rates\u001b[0m \u001b[38;5;240mat .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:32\u001b[0m (\u001b[38;5;166mcache\u001b[0m, \u001b[38;5;166murl\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m2025-01-04 12:1...\u001b[0m \u001b[38;5;37min 0.709774ms\u001b[0m\u001b[0m\r\n"]
|
116
|
+
[12.5386, "o", "\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m1\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mdoc\u001b[0m \u001b[38;5;240mat .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:175\u001b[0m (\u001b[38;5;166mcache\u001b[0m, \u001b[38;5;166murl\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<EuCentralBank...\u001b[0m \u001b[38;5;37min 0.687315ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m2\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mopen_url\u001b[0m \u001b[38;5;240mat .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:237\u001b[0m (\u001b[38;5;166murl\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<StringIO:0x00...\u001b[0m \u001b[38;5;37min 0.668835ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m3\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64m#<Class:URI>\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mopen\u001b[0m \u001b[38;5;240mat ...sdf/installs/ruby/3.3.0/lib/ruby/3.3.0/open-uri.rb:23\u001b[0m () \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<StringIO:0x00...\u001b[0m \u001b["]
|
117
|
+
[12.53868, "o", "38;5;37min 0.668764ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m4\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64m#<Class:URI>\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mparse\u001b[0m \u001b[38;5;240mat ...b/ruby/gems/3.3.0/gems/uri-1.0.2/lib/uri/common.rb:207\u001b[0m () \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<URI::HTTPS ht...\u001b[0m \u001b[38;5;37min 0.000141ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m5\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mURI::RFC3986_Parser\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mparse\u001b[0m \u001b[38;5;240mat ...ems/3.3.0/gems/uri-1.0.2/lib/uri/rfc3986_parser.rb:134\u001b[0m (\u001b[38;5;166muri\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<URI::HTTPS ht...\u001b[0m \u001b[38;5;37min 0.000103ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m4\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mOpenURI::OpenRead\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mopen\u001b[0m \u001b[38;5;240mat ...sdf/installs/ruby/3.3.0/lib/ruby/3.3.0/open-uri.rb:749\u001b[0m (\u001b[38;5;166mrest\u001b[0m, \u001b[38;5;166mblock\u001b[0m) \u001b[38;5"]
|
118
|
+
[12.538794, "o", ";245m#=>\u001b[0m \u001b[38;5;230m#<StringIO:0x00...\u001b[0m \u001b[38;5;37min 0.668527ms\u001b[0m\u001b[0m\r\n"]
|
119
|
+
[12.538908, "o", "\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m5\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64m#<Class:OpenURI>\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mopen_uri\u001b[0m \u001b[38;5;240mat ...sdf/installs/ruby/3.3.0/lib/ruby/3.3.0/open-uri.rb:133\u001b[0m () \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<StringIO:0x00...\u001b[0m \u001b[38;5;37min 0.668346ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m2\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mparse_rates\u001b[0m \u001b[38;5;240mat .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:184\u001b[0m (\u001b[38;5;166mio\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<EuCentralBank...\u001b[0m \u001b[38;5;37min 0.018372ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m3\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank::RatesDocument\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33minitialize\u001b[0m \u001b[38;5;240mat ...l_bank-1.7.0/lib/eu_central_bank/rates_document.rb:7\u001b[0m () \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230mnil\u001b[0m \u001b[38;5;37min 0.000073m"]
|
120
|
+
[12.539034, "o", "s\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m3\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mSingleton::SingletonClassMethods\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33minstance\u001b[0m \u001b[38;5;240mat ...df/installs/ruby/3.3.0/lib/ruby/3.3.0/singleton.rb:123\u001b[0m () \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<Nokogiri::Ver...\u001b[0m \u001b[38;5;37min 0.000063ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m3\u001b[0m\u001b[38;5;234m]\u001b[0m 🔄 \u001b[1m\u001b[38;5;64mEuCentralBank::RatesDocument\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mstart_element\u001b[0m (\u001b[38;5;166mname\u001b[0m, \u001b[38;5;166mattributes\u001b[0m) \u001b[1m\u001b[3m\u001b[33m[Summary: 36 calls | Avg Time: in 0.000000ms]\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m3\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank::RatesDocument\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mend_document\u001b[0m \u001b[38;5;240mat ...l_bank-1.7.0/lib/eu_central_bank/rates_document.rb:41\u001b[0m () \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230mnil\u001b[0m \u001b[38;5;37min 0.000030ms\u001b[0m\u001b[0m\r\n\u001b[3"]
|
121
|
+
[12.539088, "o", "8;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m1\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mupdate_parsed_rates\u001b[0m \u001b[38;5;240mat .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:211\u001b[0m (\u001b[38;5;166mrates_document\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m2025-01-04 12:1...\u001b[0m \u001b[38;5;37min 0.022397ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m2\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mMoney::RatesStore::StoreWithHistoricalDataSupport\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mtransaction\u001b[0m \u001b[38;5;240mat .../rates_store/store_with_historical_data_support.rb:14\u001b[0m (\u001b[38;5;166mblock\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m{#<Date: 2025-0...\u001b[0m \u001b[38;5;37min 0.022274ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m3\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mcopy_rates\u001b[0m \u001b[38;5;240mat .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:201\u001b[0m (\u001b[38;5;"]
|
122
|
+
[12.539135, "o", "166mrates_document\u001b[0m, \u001b[38;5;166mwith_date\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m{#<Date: 2025-0...\u001b[0m \u001b[38;5;37min 0.022166ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m4\u001b[0m\u001b[38;5;234m]\u001b[0m 🔄 \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mset_rate\u001b[0m (\u001b[38;5;166mfrom\u001b[0m, \u001b[38;5;166mto\u001b[0m, \u001b[38;5;166mrate\u001b[0m, \u001b[38;5;166mdate\u001b[0m) \u001b[1m\u001b[3m\u001b[33m[Summary: 31 calls | Avg Time: in 0.000002ms]\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m5\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mMoney::RatesStore::StoreWithHistoricalDataSupport\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33madd_rate\u001b[0m \u001b[38;5;240mat .../rates_store/store_with_historical_data_support.rb:5\u001b[0m (\u001b[38;5;166mcurrency_iso_from\u001b[0m, \u001b[38;5;166mcurrency_iso_to\u001b[0m, \u001b[38;5;166mrate\u001b[0m, \u001b[38;5;166mdate\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m0.10299e1\u001b[0m \u001b[38;5;37min 0.000074ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m0\u001b[0m\u001b[38;5;234"]
|
123
|
+
[12.539205, "o", "m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mexchange\u001b[0m \u001b[38;5;240mat .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:62\u001b[0m (\u001b[38;5;166mcents\u001b[0m, \u001b[38;5;166mfrom_currency\u001b[0m, \u001b[38;5;166mto_currency\u001b[0m, \u001b[38;5;166mdate\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<Money fractio...\u001b[0m \u001b[38;5;37min 0.002284ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m1\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mexchange_with\u001b[0m \u001b[38;5;240mat .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:66\u001b[0m (\u001b[38;5;166mfrom\u001b[0m, \u001b[38;5;166mto_currency\u001b[0m, \u001b[38;5;166mdate\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<Money fractio...\u001b[0m \u001b[38;5;37min 0.001976ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m2\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mget_rate\u001b[0m \u001b[38;5;240mat .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:89\u001b[0m (\u001b[38;5;166mfrom\u001b[0m, \u001b[38;5"]
|
124
|
+
[12.539308, "o", ";166mto\u001b[0m, \u001b[38;5;166mdate\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230mnil\u001b[0m \u001b[38;5;37min 0.000547ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m3\u001b[0m\u001b[38;5;234m]\u001b[0m 🔄 \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mcheck_currency_available\u001b[0m (\u001b[38;5;166mcurrency\u001b[0m) \u001b[1m\u001b[3m\u001b[33m[Summary: 2 calls | Avg Time: in 0.000000ms]\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m3\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mMoney::RatesStore::StoreWithHistoricalDataSupport\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mget_rate\u001b[0m \u001b[38;5;240mat .../rates_store/store_with_historical_data_support.rb:9\u001b[0m (\u001b[38;5;166mcurrency_iso_from\u001b[0m, \u001b[38;5;166mcurrency_iso_to\u001b[0m, \u001b[38;5;166mdate\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230mnil\u001b[0m \u001b[38;5;37min 0.000140ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m4\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mMoney::RatesStore::StoreWithHistoricalDataSupport\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5"]
|
125
|
+
[12.539394, "o", ";33mtransaction\u001b[0m \u001b[38;5;240mat .../rates_store/store_with_historical_data_support.rb:14\u001b[0m (\u001b[38;5;166mblock\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230mnil\u001b[0m \u001b[38;5;37min 0.000093ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m5\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mMoney::RatesStore::StoreWithHistoricalDataSupport\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mrate_key_for\u001b[0m \u001b[38;5;240mat .../rates_store/store_with_historical_data_support.rb:46\u001b[0m (\u001b[38;5;166mcurrency_iso_from\u001b[0m, \u001b[38;5;166mcurrency_iso_to\u001b[0m, \u001b[38;5;166mdate\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m\"USD_TO_EUR\"\u001b[0m \u001b[38;5;37min 0.000026ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m2\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mMoney::RatesStore::StoreWithHistoricalDataSupport\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mtransaction\u001b[0m \u001b[38;5;240mat .../rates_store/store_with_historical_data_support.rb:14\u001b[0m (\u001b[38;5;166mblock\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m1\u001b[0m \u001b[38;5;37min 0.000648ms\u001b[0m\u001b[0m\r\n\u001b"]
|
126
|
+
[12.539499, "o", "[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m3\u001b[0m\u001b[38;5;234m]\u001b[0m 🔄 \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mget_rate\u001b[0m (\u001b[38;5;166mfrom\u001b[0m, \u001b[38;5;166mto\u001b[0m, \u001b[38;5;166mdate\u001b[0m) \u001b[1m\u001b[3m\u001b[33m[Summary: 2 calls | Avg Time: in 0.000072ms]\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m4\u001b[0m\u001b[38;5;234m]\u001b[0m 🔄 \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mcheck_currency_available\u001b[0m (\u001b[38;5;166mcurrency\u001b[0m) \u001b[1m\u001b[3m\u001b[33m[Summary: 2 calls | Avg Time: in 0.000000ms]\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m4\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mMoney::RatesStore::StoreWithHistoricalDataSupport\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mget_rate\u001b[0m \u001b[38;5;240mat .../rates_store/store_with_historical_data_support.rb:9\u001b[0m (\u001b[38;5;166mcurrency_iso_from\u001b[0m, \u001b[38;5;166mcurrency_iso_to\u001b[0m, \u001b[38;5;166mdate\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m0.10299e1\u001b[0m \u001b[38;5;37min 0.00"]
|
127
|
+
[12.539562, "o", "0100ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m5\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mMoney::RatesStore::StoreWithHistoricalDataSupport\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mtransaction\u001b[0m \u001b[38;5;240mat .../rates_store/store_with_historical_data_support.rb:14\u001b[0m (\u001b[38;5;166mblock\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m0.10299e1\u001b[0m \u001b[38;5;37min 0.000060ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m2\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mEuCentralBank\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mcalculate_exchange\u001b[0m \u001b[38;5;240mat .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:229\u001b[0m (\u001b[38;5;166mfrom\u001b[0m, \u001b[38;5;166mto_currency\u001b[0m, \u001b[38;5;166mrate\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<Money fractio...\u001b[0m \u001b[38;5;37min 0.000652ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m0\u001b[0m\u001b[38;5;234m]\u001b[0m 🔄 \u001b[1m\u001b[38;5;64mConcurrent::Collection::NonConcurrentMapBackend\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33m[]\u001b[0m (\u001b[3"]
|
128
|
+
[12.539652, "o", "8;5;166mkey\u001b[0m) \u001b[1m\u001b[3m\u001b[33m[Summary: 12 calls | Avg Time: in 0.000014ms]\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m1\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mConcurrent::Collection::MriMapBackend\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33minitialize\u001b[0m \u001b[38;5;240mat ...-ruby/concurrent/collection/map/mri_map_backend.rb:12\u001b[0m (\u001b[38;5;166moptions\u001b[0m, \u001b[38;5;166mdefault_proc\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<Thread::Mutex...\u001b[0m \u001b[38;5;37min 0.000106ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m2\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mConcurrent::Collection::NonConcurrentMapBackend\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33minitialize\u001b[0m \u001b[38;5;240mat ...rrent/collection/map/non_concurrent_map_backend.rb:15\u001b[0m (\u001b[38;5;166moptions\u001b[0m, \u001b[38;5;166mdefault_proc\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230mnil\u001b[0m \u001b[38;5;37min 0.000060ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m3\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mConcurre"]
|
129
|
+
[12.539737, "o", "nt::Collection::NonConcurrentMapBackend\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33mset_backend\u001b[0m \u001b[38;5;240mat ...rrent/collection/map/non_concurrent_map_backend.rb:116\u001b[0m (\u001b[38;5;166mdefault_proc\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m{:en=>[:en], \"n...\u001b[0m \u001b[38;5;37min 0.000021ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m1\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mConcurrent::Collection::MriMapBackend\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33m[]=\u001b[0m \u001b[38;5;240mat ...-ruby/concurrent/collection/map/mri_map_backend.rb:17\u001b[0m (\u001b[38;5;166mkey\u001b[0m, \u001b[38;5;166mvalue\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<Concurrent::M...\u001b[0m \u001b[38;5;37min 0.000056ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m2\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mConcurrent::Collection::NonConcurrentMapBackend\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33m[]=\u001b[0m \u001b[38;5;240mat ...rrent/collection/map/non_concurrent_map_backend.rb:25\u001b[0m (\u001b[38;5;166mkey\u001b[0m, \u001b[38;5;166mvalue\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m#<C"]
|
130
|
+
[12.539826, "o", "oncurrent::M...\u001b[0m \u001b[38;5;37min 0.000020ms\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m0\u001b[0m\u001b[38;5;234m]\u001b[0m 🔄 \u001b[1m\u001b[38;5;64mConcurrent::Collection::MriMapBackend\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33m[]=\u001b[0m (\u001b[38;5;166mkey\u001b[0m, \u001b[38;5;166mvalue\u001b[0m) \u001b[1m\u001b[3m\u001b[33m[Summary: 4 calls | Avg Time: in 0.000005ms]\u001b[0m\u001b[0m\r\n\u001b[38;5;33m🚀 [START] \u001b[3m\u001b[38;5;235mdepth\u001b[0m\u001b[38;5;235m[\u001b[0m\u001b[38;5;160m1\u001b[0m\u001b[38;5;234m]\u001b[0m \u001b[1m\u001b[38;5;64mConcurrent::Collection::NonConcurrentMapBackend\u001b[0m\u001b[38;5;61m#\u001b[0m\u001b[1m\u001b[38;5;33m[]=\u001b[0m \u001b[38;5;240mat ...rrent/collection/map/non_concurrent_map_backend.rb:25\u001b[0m (\u001b[38;5;166mkey\u001b[0m, \u001b[38;5;166mvalue\u001b[0m) \u001b[38;5;245m#=>\u001b[0m \u001b[38;5;230m[:en]\u001b[0m \u001b[38;5;37min 0.000019ms\u001b[0m\u001b[0m\r\n\u001b[1m\u001b[4m\u001b[38;5;254m📊 [STATS]Total Traces: 314 | Max Depth: 5 | Event Counts: [Call: 157, Return: 157]\u001b[0m\r\n"]
|
131
|
+
[12.541176, "o", "\u001b[38;5;240m🔄 [PROCESSING]Overwriting existing file: tmp/trace_output.txt\u001b[0m\r\n"]
|
132
|
+
[12.542046, "o", "\u001b[38;5;64m📤 [EXPORTED]Data successfully exported to tmp/trace_output.txt\u001b[0m\r\n"]
|
133
|
+
[12.545393, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
|
134
|
+
[12.545559, "o", "\u001b]2;patrick204nqh@Patrick-Mac:~/Desktop/sandbox/trace_viz\u0007\u001b]1;..box/trace_viz\u0007"]
|
135
|
+
[12.548209, "o", "\u001b]7;file://Patrick-Mac.local/Users/patrick204nqh/Desktop/sandbox/trace_viz\u001b\\"]
|
136
|
+
[12.633817, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
137
|
+
[12.633892, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
|
138
|
+
[12.687365, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
139
|
+
[12.807312, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
140
|
+
[12.858651, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [⇡?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
141
|
+
[12.995774, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [⇡?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
142
|
+
[18.03876, "o", "b"]
|
143
|
+
[18.044081, "o", "\b\u001b[4mb\u001b[24m"]
|
144
|
+
[18.044409, "o", "\b\u001b[4mb\u001b[24m\u001b[90mat examples/eu_central_bank.rb\u001b[39m\u001b[30D"]
|
145
|
+
[18.110539, "o", "\b\u001b[4mb\u001b[39m\u001b[4ma\u001b[24m"]
|
146
|
+
[18.114467, "o", "\b\b\u001b[24m\u001b[1m\u001b[31mb\u001b[24m\u001b[1m\u001b[31ma\u001b[0m\u001b[39m"]
|
147
|
+
[18.301846, "o", "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31ma\u001b[1m\u001b[31mt\u001b[0m\u001b[39m"]
|
148
|
+
[18.302741, "o", "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32ma\u001b[0m\u001b[32mt\u001b[39m"]
|
149
|
+
[18.467515, "o", "\b\u001b[32mt\u001b[32m \u001b[39m"]
|
150
|
+
[18.468982, "o", "\b\b\u001b[32mt\u001b[39m\u001b[39m "]
|
151
|
+
[18.660857, "o", "\u001b[39mt\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[26D"]
|
152
|
+
[18.664391, "o", "\b\u001b[4mt\u001b[24m"]
|
153
|
+
[18.664653, "o", "\u001b[90mmp/trace_output.txt\u001b[39m\u001b[19D"]
|
154
|
+
[18.841845, "o", "\b\u001b[4mt\u001b[39m\u001b[4mm\u001b[24m"]
|
155
|
+
[19.129984, "o", "\b\u001b[4mm\u001b[39m\u001b[4mp\u001b[24m"]
|
156
|
+
[19.658855, "o", "\u001b[39m/\u001b[39mt\u001b[39mr\u001b[39ma\u001b[39mc\u001b[39me\u001b[39m_\u001b[39mo\u001b[39mu\u001b[39mt\u001b[39mp\u001b[39mu\u001b[39mt\u001b[39m.\u001b[39mt\u001b[39mx\u001b[39mt"]
|
157
|
+
[19.661751, "o", "\u001b[18D\u001b[4mp\u001b[4m/\u001b[4mt\u001b[4mr\u001b[4ma\u001b[4mc\u001b[4me\u001b[4m_\u001b[4mo\u001b[4mu\u001b[4mt\u001b[4mp\u001b[4mu\u001b[4mt\u001b[4m.\u001b[4mt\u001b[4mx\u001b[4mt\u001b[24m"]
|
158
|
+
[20.285253, "o", "\u001b[?1l\u001b>"]
|
159
|
+
[20.285322, "o", "\u001b[?2004l"]
|
160
|
+
[20.286674, "o", "\r\r\n"]
|
161
|
+
[20.287287, "o", "\u001b]2;bat tmp/trace_output.txt\u0007\u001b]1;bat\u0007"]
|
162
|
+
[20.315885, "o", "\r\u001b[38;5;238m───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n \u001b[38;5;238m│ \u001b[0mFile: \u001b[1mtmp/trace_output.txt\u001b[0m\u001b[m\r\n\u001b[38;5;238m───────┼───────────────────────────────────────────────────────────"]
|
163
|
+
[20.315966, "o", "───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n\u001b[38;5;238m 1\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[0] EuCentralBank#initialize at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:27 (st, block)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 2\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[0] EuCentralBank#update_rates at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:32 (cache, url)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 3\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[1] EuCentralBank#doc at .../gems/eu_central_bank-1.7.0/lib/eu_central"]
|
164
|
+
[20.316147, "o", "_bank.rb:175 (cache, url)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 4\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[2] EuCentralBank#open_url at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:237 (url)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 5\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[3] #<Class:URI>#open at ...sdf/installs/ruby/3.3.0/lib/ruby/3.3.0/open-uri.rb:23 ()\u001b[0m\u001b[m\r\n\u001b[38;5;238m 6\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[4] #<Class:URI>#parse at ...b/ruby/gems/3.3.0/gems/uri-1.0.2/lib/uri/common.rb:207 ()\u001b[0m\u001b[m\r\n\u001b[38;5;238m 7\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[5] URI::RFC3986_Parser#parse at ...ems/3.3.0/gems/uri-1.0.2/lib/uri/rfc3986_parser.rb:134 (uri)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 8\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[4] OpenURI::OpenRead#open at ...sdf/installs/ruby/3.3.0/lib/ruby/3.3.0/open-uri.rb:749 (rest, block)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 9\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[5] #<Class:OpenURI>#open_uri at ...sdf/installs/ruby/3.3.0/lib/ru"]
|
165
|
+
[20.316239, "o", "by/3.3.0/open-uri.rb:133 ()\u001b[0m\u001b[m\r\n\u001b[38;5;238m 10\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[2] EuCentralBank#parse_rates at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:184 (io)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 11\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[3] EuCentralBank::RatesDocument#initialize at ...l_bank-1.7.0/lib/eu_central_bank/rates_document.rb:7 ()\u001b[0m\u001b[m\r\n\u001b[38;5;238m 12\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[3] Singleton::SingletonClassMethods#instance at ...df/installs/ruby/3.3.0/lib/ruby/3.3.0/singleton.rb:123 ()\u001b[0m\u001b[m\r\n\u001b[38;5;238m 13\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[3] 🔄 EuCentralBank::RatesDocument#start_element at ...l_bank-1.7.0/lib/eu_central_bank/rates_document.rb (name, attributes) [Summary: 36 calls | Avg Time: in 0.000000ms]\u001b[0m\u001b[m\r\n\u001b[38;5;238m 14\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[3] EuCentralBank::RatesDocument#end_document at ...l_bank-1.7.0/lib/eu_central_bank/rates_document.rb:41 ()\u001b[0m\u001b[m\r\n\u001b[38;5;23"]
|
166
|
+
[20.316413, "o", "8m 15\u001b[0m "]
|
167
|
+
[20.316514, "o", "\u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[1] EuCentralBank#update_parsed_rates at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:211 (rates_document)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 16\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[2] Money::RatesStore::StoreWithHistoricalDataSupport#transaction at .../rates_store/store_with_historical_data_support.rb:14 (block)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 17\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[3] EuCentralBank#copy_rates at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:201 (rates_document, with_date)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 18\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[4] 🔄 EuCentralBank#set_rate at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb (from, to, rate, date) [Summary: 31 calls | Avg Time: in 0.000002ms]\u001b[0m\u001b[m\r\n\u001b[38;5;238m 19\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[5] Money::RatesStore::StoreWithHistoricalDataSupport#add_rate at .../rates_store/store_with_historical_data_support.rb:5 (currency_iso_from, c"]
|
168
|
+
[20.316594, "o", "urrency_iso_to, rate, date)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 20\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[0] EuCentralBank#exchange at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:62 (cents, from_currency, to_currency, date)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 21\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[1] EuCentralBank#exchange_with at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:66 (from, to_currency, date)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 22\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[2] EuCentralBank#get_rate at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:89 (from, to, date)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 23\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[3] 🔄 EuCentralBank#check_currency_available at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb (currency) [Summary: 2 calls | Avg Time: in 0.000000ms]\u001b[0m\u001b[m\r\n\u001b[38;5;238m 24\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[3] Money::RatesStore::StoreWithHistoricalDataSupport#get_rate at .../rates_store/store_with_historical_d"]
|
169
|
+
[20.316702, "o", "ata_sup"]
|
170
|
+
[20.316735, "o", "port.rb:9 (currency_iso_from, currency_iso_to, date)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 25\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[4] Money::RatesStore::StoreWithHistoricalDataSupport#transaction at .../rates_store/store_with_historical_data_support.rb:14 (block)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 26\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[5] Money::RatesStore::StoreWithHistoricalDataSupport#rate_key_for at .../rates_store/store_with_historical_data_support.rb:46 (currency_iso_from, currency_iso_to, date)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 27\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[2] Money::RatesStore::StoreWithHistoricalDataSupport#transaction at .../rates_store/store_with_historical_data_support.rb:14 (block)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 28\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[3] 🔄 EuCentralBank#get_rate at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb (from, to, date) [Summary: 2 calls | Avg Time: in 0.000072ms]\u001b[0m\u001b[m\r\n\u001b[38;5;238m 29\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m "]
|
171
|
+
[20.316785, "o", " dep"]
|
172
|
+
[20.316856, "o", "th[4] 🔄 EuCentralBank#check_currency_available at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb (currency) [Summary: 2 calls | Avg Time: in 0.000000ms]\u001b[0m\u001b[m\r\n\u001b[38;5;238m 30\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[4] Money::RatesStore::StoreWithHistoricalDataSupport#get_rate at .../rates_store/store_with_historical_data_support.rb:9 (currency_iso_from, currency_iso_to, date)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 31\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[5] Money::RatesStore::StoreWithHistoricalDataSupport#transaction at .../rates_store/store_with_historical_data_support.rb:14 (block)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 32\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[2] EuCentralBank#calculate_exchange at .../gems/eu_central_bank-1.7.0/lib/eu_central_bank.rb:229 (from, to_currency, rate)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 33\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[0] 🔄 Concurrent::Collection::NonConcurrentMapBackend#[] at ...rrent/collection/map/non_concurrent_map_backend.rb (key) [Summary"]
|
173
|
+
[20.316927, "o", ": 1"]
|
174
|
+
[20.316978, "o", "2 calls | Avg Time: in 0.000014ms]\u001b[0m\u001b[m\r\n\u001b[38;5;238m 34\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[1] Concurrent::Collection::MriMapBackend#initialize at ...-ruby/concurrent/collection/map/mri_map_backend.rb:12 (options, default_proc)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 35\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[2] Concurrent::Collection::NonConcurrentMapBackend#initialize at ...rrent/collection/map/non_concurrent_map_backend.rb:15 (options, default_proc)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 36\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[3] Concurrent::Collection::NonConcurrentMapBackend#set_backend at ...rrent/collection/map/non_concurrent_map_backend.rb:116 (default_proc)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 37\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[1] Concurrent::Collection::MriMapBackend#[]= at ...-ruby/concurrent/collection/map/mri_map_backend.rb:17 (key, value)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 38\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[2] Concurrent::Collection::NonConcurrentMapBackend#[]= at ...rrent"]
|
175
|
+
[20.317034, "o", "/col"]
|
176
|
+
[20.317141, "o", "lection/map/non_concurrent_map_backend.rb:25 (key, value)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 39\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[0] 🔄 Concurrent::Collection::MriMapBackend#[]= at ...-ruby/concurrent/collection/map/mri_map_backend.rb (key, value) [Summary: 4 calls | Avg Time: in 0.000005ms]\u001b[0m\u001b[m\r\n\u001b[38;5;238m 40\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[1] Concurrent::Collection::NonConcurrentMapBackend#[]= at ...rrent/collection/map/non_concurrent_map_backend.rb:25 (key, value)\u001b[0m\u001b[m\r\n\u001b[38;5;238m───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"]
|
177
|
+
[20.31715, "o", "─"]
|
178
|
+
[20.317728, "o", "──────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n\r\u001b[K"]
|
179
|
+
[20.319106, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
|
180
|
+
[20.319276, "o", "\u001b]2;patrick204nqh@Patrick-Mac:~/Desktop/sandbox/trace_viz\u0007\u001b]1;..box/trace_viz\u0007"]
|
181
|
+
[20.321552, "o", "\u001b]7;file://Patrick-Mac.local/Users/patrick204nqh/Desktop/sandbox/trace_viz\u001b\\"]
|
182
|
+
[20.411785, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
183
|
+
[20.411812, "o", "\u001b[?1h\u001b="]
|
184
|
+
[20.41196, "o", "\u001b[?2004h"]
|
185
|
+
[20.468542, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
186
|
+
[20.586486, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
187
|
+
[20.641947, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [⇡?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
188
|
+
[20.78396, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [⇡?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[239C\u001b[1A\u001b[1B\u001b[239D"]
|
189
|
+
[23.671284, "o", "\u001b[?2004l\r\r\n"]
|
data/examples/example.rb
CHANGED
@@ -1,42 +1,113 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
|
2
2
|
require "trace_viz"
|
3
3
|
|
4
|
-
class
|
5
|
-
def
|
6
|
-
|
7
|
-
log_result(result)
|
8
|
-
result
|
4
|
+
class Calculator
|
5
|
+
def initialize(factor)
|
6
|
+
@factor = factor
|
9
7
|
end
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
sum = a
|
14
|
-
|
9
|
+
# A method that triggers a chain of calculations
|
10
|
+
def calculate_chain(a, b)
|
11
|
+
sum = add(a, b)
|
12
|
+
scaled = scale(sum)
|
13
|
+
complex_operation(scaled)
|
15
14
|
end
|
16
15
|
|
17
|
-
|
16
|
+
# Basic addition
|
17
|
+
def add(x, y)
|
18
18
|
sleep(0.05)
|
19
|
-
|
19
|
+
x + y
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
# Scaling a number by the factor
|
23
|
+
def scale(value)
|
24
|
+
sleep(0.05)
|
25
|
+
value * @factor
|
26
|
+
end
|
27
|
+
|
28
|
+
# Complex operation involving another class
|
29
|
+
def complex_operation(value)
|
30
|
+
sleep(0.05)
|
31
|
+
Logger.new.log("Starting complex operation")
|
32
|
+
divider = Divider.new
|
33
|
+
divider.divide_and_process(value, 2)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class Divider
|
38
|
+
# Divides a number and calls a nested method
|
39
|
+
def divide_and_process(value, divisor)
|
40
|
+
result = divide(value, divisor)
|
41
|
+
process_divided_result(result)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Performs division
|
45
|
+
def divide(a, b)
|
46
|
+
raise "Division by zero!" if b.zero?
|
47
|
+
|
48
|
+
sleep(0.05)
|
49
|
+
a / b
|
50
|
+
end
|
51
|
+
|
52
|
+
# Processes the divided result further
|
53
|
+
def process_divided_result(value)
|
54
|
+
Logger.new.log("Processing divided result: #{value}")
|
55
|
+
nested_process(value)
|
56
|
+
end
|
57
|
+
|
58
|
+
# A nested operation
|
59
|
+
def nested_process(value)
|
60
|
+
sleep(0.05)
|
61
|
+
Logger.new.log("Final nested processing on #{value}")
|
62
|
+
value + 10
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
class Logger
|
67
|
+
def log(message)
|
68
|
+
sleep(0.01)
|
69
|
+
puts "[LOG] #{message}"
|
25
70
|
end
|
26
71
|
end
|
27
72
|
|
28
73
|
TraceViz.trace(
|
74
|
+
general: {
|
29
75
|
tab_size: 4,
|
30
76
|
show_indent: true,
|
31
77
|
show_depth: true,
|
32
|
-
max_display_depth:
|
78
|
+
max_display_depth: 10,
|
33
79
|
show_method_name: true,
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
80
|
+
},
|
81
|
+
params: {
|
82
|
+
show: true,
|
83
|
+
mode: :name_and_value,
|
84
|
+
truncate_values: 10,
|
85
|
+
},
|
86
|
+
result: {
|
87
|
+
show: true,
|
88
|
+
truncate_length: 5,
|
89
|
+
},
|
90
|
+
source_location: {
|
91
|
+
show: true,
|
92
|
+
truncate_length: 20,
|
93
|
+
},
|
94
|
+
execution: {
|
95
|
+
show_time: true,
|
96
|
+
show_trace_events: [:call, :return],
|
97
|
+
},
|
98
|
+
filters: [
|
99
|
+
:exclude_internal_call,
|
100
|
+
include_classes: {
|
101
|
+
classes: [Calculator, Divider, Logger],
|
102
|
+
}
|
103
|
+
],
|
104
|
+
export: {
|
105
|
+
enabled: true,
|
106
|
+
format: :txt,
|
107
|
+
overwrite: true
|
108
|
+
}
|
39
109
|
) do
|
40
|
-
|
41
|
-
|
42
|
-
|
110
|
+
calculator = Calculator.new(3)
|
111
|
+
result = calculator.calculate_chain(10, 20)
|
112
|
+
puts "Final result: #{result}"
|
113
|
+
end
|
@@ -1,11 +1,32 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "trace_viz/
|
3
|
+
require "trace_viz/helpers"
|
4
|
+
require "trace_viz/loggers/logging_manager"
|
5
|
+
require "trace_viz/exporters/export_manager"
|
4
6
|
|
5
7
|
module TraceViz
|
6
8
|
module Adapters
|
7
9
|
class BaseAdapter
|
8
|
-
|
10
|
+
include Helpers::ConfigHelper
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@logger = Loggers::LoggingManager.new
|
14
|
+
@exporter = Exporters::ExportManager.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def trace(&block)
|
18
|
+
execute_trace(&block)
|
19
|
+
ensure
|
20
|
+
logger.log_post_collection(collector)
|
21
|
+
logger.log_stats(collector)
|
22
|
+
exporter.export(collector)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
attr_reader :logger, :exporter, :collector
|
28
|
+
|
29
|
+
def execute_trace
|
9
30
|
raise NotImplementedError
|
10
31
|
end
|
11
32
|
end
|
@@ -1,23 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "trace_viz/logger"
|
4
3
|
require "trace_viz/adapters/base_adapter"
|
5
|
-
require "trace_viz/
|
6
|
-
require "trace_viz/adapters/trace_point/trace_logger"
|
7
|
-
require "trace_viz/adapters/trace_point/trace_data"
|
8
|
-
require "trace_viz/adapters/trace_point/event_handler"
|
4
|
+
require "trace_viz/collectors/trace_point_collector"
|
9
5
|
|
10
6
|
module TraceViz
|
11
7
|
module Adapters
|
12
8
|
class TracePointAdapter < BaseAdapter
|
13
|
-
def
|
14
|
-
|
15
|
-
|
9
|
+
def initialize
|
10
|
+
super()
|
11
|
+
|
12
|
+
@collector = Collectors::TracePointCollector.new
|
13
|
+
end
|
16
14
|
|
17
|
-
|
18
|
-
next if trace_data.exceeded_max_depth?
|
15
|
+
private
|
19
16
|
|
20
|
-
|
17
|
+
def execute_trace(&block)
|
18
|
+
::TracePoint.new(:call, :return) do |tp|
|
19
|
+
collector.collect(tp)
|
21
20
|
end.enable(&block)
|
22
21
|
end
|
23
22
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "trace_viz/helpers"
|
4
|
+
require "trace_viz/loggers/logging_manager"
|
5
|
+
require_relative "hierarchy_linker"
|
6
|
+
require_relative "trace_stats"
|
7
|
+
require_relative "trace_pipeline_builder"
|
8
|
+
|
9
|
+
module TraceViz
|
10
|
+
module Collectors
|
11
|
+
class BaseCollector
|
12
|
+
include Helpers::ConfigHelper
|
13
|
+
include Helpers::TrackingHelper
|
14
|
+
|
15
|
+
attr_reader :collection, :hierarchy, :stats, :renderer
|
16
|
+
|
17
|
+
# To implement collect trace data from the given event,
|
18
|
+
# you need to enter the `config` context to perform the evaluation.
|
19
|
+
def initialize
|
20
|
+
setup_logger
|
21
|
+
setup_stats
|
22
|
+
setup_pipeline
|
23
|
+
setup_hierarchy
|
24
|
+
|
25
|
+
clear
|
26
|
+
end
|
27
|
+
|
28
|
+
def collect(event)
|
29
|
+
return unless can_collect?(event)
|
30
|
+
|
31
|
+
trace_data = build_trace(event)
|
32
|
+
processed_data = process_trace(trace_data)
|
33
|
+
|
34
|
+
return unless processed_data
|
35
|
+
|
36
|
+
store_trace(processed_data)
|
37
|
+
link_to_hierarchy(processed_data)
|
38
|
+
end
|
39
|
+
|
40
|
+
def clear
|
41
|
+
@collection = []
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
attr_reader :logger, :pipeline
|
47
|
+
|
48
|
+
def setup_logger
|
49
|
+
@logger = Loggers::LoggingManager.new
|
50
|
+
end
|
51
|
+
|
52
|
+
def setup_stats
|
53
|
+
@stats = TraceStats.new
|
54
|
+
end
|
55
|
+
|
56
|
+
def setup_pipeline
|
57
|
+
@pipeline = TracePipelineBuilder.build
|
58
|
+
end
|
59
|
+
|
60
|
+
def setup_hierarchy
|
61
|
+
@hierarchy = TraceData::HierarchyLinker.new
|
62
|
+
end
|
63
|
+
|
64
|
+
def process_trace(trace_data)
|
65
|
+
pipeline.process(trace_data)
|
66
|
+
end
|
67
|
+
|
68
|
+
# Base on trace-event for specific adapter
|
69
|
+
def can_collect?(event)
|
70
|
+
raise NotImplementedError
|
71
|
+
end
|
72
|
+
|
73
|
+
# Builds trace data from the trace-event for specific adapter
|
74
|
+
def build_trace(event)
|
75
|
+
raise NotImplementedError
|
76
|
+
end
|
77
|
+
|
78
|
+
def store_trace(trace_data)
|
79
|
+
logger.log_runtime_trace(trace_data)
|
80
|
+
stats.update(trace_data)
|
81
|
+
|
82
|
+
@collection << trace_data
|
83
|
+
end
|
84
|
+
|
85
|
+
def link_to_hierarchy(trace_data)
|
86
|
+
hierarchy.link(trace_data)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|