xray_method_tracer 0.1.7 → 0.1.9

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: 1653b1bf3d71e374df1edb8641251e744b6932811cba627ee7e6891f5de84da0
4
- data.tar.gz: 34b6474eca6b4ab31246b25d73c77d64864dd6057522073b5e7a7955cb43d9ad
3
+ metadata.gz: 2449903c8b3dd706490511f87d515e440461c5646a7abccc72057c6210f4819f
4
+ data.tar.gz: a34935a6d569bcfae7daa23f4741cf6ce7b2696044100dfde98754ae33ba8042
5
5
  SHA512:
6
- metadata.gz: 15b564645c56a4efd7c56526ecd960acefdd68893deaf67eabcab561e789c71d46acf98ebb1b5a6daa473f35a2f2119ed456c7d42c4bdf05570fd88a6ea0dea5
7
- data.tar.gz: b36086fa3b9cd292e806d88433cd5ab0144ec1b478d2bb8ebf06747da1159e7cd48dce610a3d9db4e631824557d4fb48716417e6a5ba970be5a68deba3c951e2
6
+ metadata.gz: b252304f4d94baf5e9e40670e021b60329de717c050873644e45509b8e4d78eb170d681893f21d46664c894317f4682602ad3f9ee57b5fc7a48d964671e95081
7
+ data.tar.gz: f96b3ce63c9c4bf901a9f2b98262f4112002d3611578eea2bc3409369200293b9fcc16fc26b28a42af3a1379f5345fb8c5e842ea6cf23d6766e6b5d07bfd05f9
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,30 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ require:
4
+ - rubocop-rspec
5
+
6
+ AllCops:
7
+ TargetRubyVersion: 3.0.0
8
+
9
+ Style/StringLiterals:
10
+ Enabled: true
11
+ EnforcedStyle: double_quotes
12
+
13
+ Style/StringLiteralsInInterpolation:
14
+ Enabled: true
15
+ EnforcedStyle: double_quotes
16
+
17
+ Documentation:
18
+ Enabled: false
19
+
20
+ # rspecではネストが長くなるため無効にする
21
+ Metrics/BlockLength:
22
+ Exclude:
23
+ - "spec/**/*"
24
+
25
+ # 日本語では〜の場合になるためfalseにする
26
+ RSpec/ContextWording:
27
+ Enabled: false
28
+
29
+ Layout/LineLength:
30
+ Max: 120
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,17 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config --exclude-limit 999999`
3
+ # on 2024-01-23 10:09:11 UTC using RuboCop version 1.60.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 2
10
+ # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
11
+ Metrics/AbcSize:
12
+ Max: 26
13
+
14
+ # Offense count: 3
15
+ # Configuration parameters: AllowedGroups.
16
+ RSpec/NestedGroups:
17
+ Max: 4
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ ## [Unreleased]
2
+
3
+ ## [0.1.0] - 2024-01-22
4
+
5
+ - Initial release
data/README.md ADDED
@@ -0,0 +1,77 @@
1
+ # XrayMethodTracer
2
+
3
+ X-Ray SDK for Rubyを使用してmodelやserviceなどに書いたメソッドを計装するための仕組み
4
+
5
+ ## Getting Started
6
+ [aws-xray-sdk-ruby](https://github.com/aws/aws-xray-sdk-ruby)
7
+
8
+ 1. Add this line to your application's Gemfile:
9
+
10
+ ```
11
+ gem 'xray_method_tracer’
12
+ ```
13
+
14
+ And then execute:
15
+ ```
16
+ bundle install
17
+ ```
18
+
19
+ If you are not using aws-xray-sdk-ruby yet, please also add this line:
20
+
21
+ ```
22
+ gem "aws-xray-sdk"
23
+ ```
24
+
25
+ ## Ussage
26
+
27
+ Check the [Getting Started](https://github.com/Taishikun0721/xray_method_tracer/wiki/Getting-Started) pages.
28
+
29
+ 1.. `/config/initializers` 配下で下記のスクリプトを設定する
30
+
31
+ ``` ruby xray_method_tracer.rb
32
+ require 'xray_method_tracer'
33
+
34
+ Rails.application.config.after_initialize do
35
+ Rails.application.eager_load!
36
+
37
+ base_klasses = [BaseService, BaseUsecase]
38
+ klasses = [Human, Bird, Fish]
39
+ XRayMethodTracer.new(base_klasses: base_klasses, klasses: klasses).trace
40
+ end
41
+ ```
42
+
43
+ ## Testing
44
+
45
+ ```
46
+ bundle exec rspec
47
+ ```
48
+
49
+ ## Lint
50
+ ```
51
+ bundle exec rubocop
52
+ ```
53
+
54
+
55
+ TODO: Replace `UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG` with your gem name right after releasing it to RubyGems.org. Please do not do it earlier due to security reasons. Alternatively, replace this section with instructions to install your gem from git if you don't plan to release to RubyGems.org.
56
+
57
+ Install the gem and add to the application's Gemfile by executing:
58
+
59
+ $ bundle add UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG
60
+
61
+ If bundler is not being used to manage dependencies, install the gem by executing:
62
+
63
+ $ gem install UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG
64
+
65
+ ## Usage
66
+
67
+ TODO: Write usage instructions here
68
+
69
+ ## Development
70
+
71
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
72
+
73
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
74
+
75
+ ## Contributing
76
+
77
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/xray_method_tracer.
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ require "rubocop/rake_task"
9
+
10
+ RuboCop::RakeTask.new
11
+
12
+ task default: %i[spec rubocop]
@@ -0,0 +1,20 @@
1
+ version: '3.8'
2
+ services:
3
+ ruby:
4
+ image: ruby:3.3.0-slim
5
+ volumes:
6
+ - ./:/app
7
+ working_dir: /app
8
+ command: bash
9
+ environment:
10
+ AWS_XRAY_DAEMON_ADDRESS: localhost:2000
11
+
12
+ collector:
13
+ image: amazon/aws-xray-daemon
14
+ ports:
15
+ - 2000:2000/udp
16
+ environment:
17
+ - AWS_REGION=ap-northeast-1
18
+ - AWS_ACCESS_KEY_ID=
19
+ - AWS_SECRET_ACCESS_KEY=
20
+ command: ["-o"]
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "xray_method_tracer"
@@ -0,0 +1,35 @@
1
+ ## XRayMethodTracers
2
+ ### 概要
3
+ X-Ray SDK for Rubyを使用してmodelやserviceなどに書いたメソッドを計装するための仕組み
4
+
5
+ ### 依存関係
6
+ [aws-xray-sdk-ruby](https://github.com/aws/aws-xray-sdk-ruby)
7
+
8
+
9
+ ### 使用方法
10
+ 1. /lib配下に`xray_method_tracers`のディレクトリを設置して、application.rbで読み込む
11
+
12
+ ``` ruby config/application.rb
13
+ # lib配下を事前に読み込むように設定
14
+ config.autoload_paths += %W[#{config.root}/lib]
15
+ config.eager_load_paths << Rails.root.join('lib')
16
+ ```
17
+
18
+
19
+ 2. `/config/initializers` 配下で初期化する
20
+
21
+ ``` ruby xray_method_tracer.rb
22
+ require 'xray_method_tracers/method_tracer'
23
+
24
+ Rails.application.config.after_initialize do
25
+ unless Rails.env.test?
26
+ MethodTracer.trace_all_methods!
27
+ end
28
+ end
29
+
30
+ ```
31
+
32
+ サーバーを起動して、メソッドを実行すると該当するメソッドのトレースを取得できます
33
+ ``` bash
34
+ bundle exec rails s
35
+ ```
@@ -0,0 +1,13 @@
1
+ ## Loggers
2
+
3
+ ### 概要
4
+ ライブラリ内部で使用するloggerが格納されているディレクトリ
5
+
6
+ ### 使い方
7
+
8
+ ``` ruby
9
+ logger = Loggers::TraceLogger.new
10
+ logger.info('hello world!!')
11
+
12
+ =>
13
+ ```
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "logger"
4
+
5
+ module Loggers
6
+ class TraceLogger
7
+ def initialize
8
+ @logger = Logger.new($stdout)
9
+ end
10
+
11
+ def debug(message)
12
+ @logger.debug("X-Ray Method Tracer: #{message}")
13
+ end
14
+
15
+ def info(message)
16
+ @logger.info("X-Ray Method Tracer: #{message}")
17
+ end
18
+
19
+ def warn(message)
20
+ @logger.warn("X-Ray Method Tracer: #{message}")
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../rails/constants"
4
+ require_relative "./method_selector"
5
+
6
+ module Methods
7
+ class ClassMethodOverrider
8
+ attr_reader :klass
9
+
10
+ def initialize(klass)
11
+ @klass = klass
12
+ end
13
+
14
+ # rubocop:disable Metrics/MethodLength
15
+ def override!(source_locations)
16
+ target_method_names = MethodSelector.new(klass.singleton_class).select_method_names_by_source_location(
17
+ source_locations
18
+ )
19
+ target_klass = klass
20
+
21
+ Module.new do
22
+ require_relative "../utils/segment"
23
+ require_relative "../utils/service_observer"
24
+
25
+ target_method_names.each do |method_name|
26
+ define_method(method_name) do |*args, **kwargs, &block|
27
+ begin
28
+ segment = Utils::ServiceObserver.begin_subsegment(
29
+ Utils::Segment.build_name("CM", target_klass.name, method_name)
30
+ )
31
+ segment.add_metadata(:args, Utils::Segment.format_args(args))
32
+ result = if kwargs.empty?
33
+ super(*args, &block)
34
+ else
35
+ segment.metadata[:kwargs] = kwargs
36
+ super(*args, **kwargs, &block)
37
+ end
38
+ rescue StandardError => e
39
+ segment.add_exception(e)
40
+ raise e
41
+ ensure
42
+ Utils::ServiceObserver.end_subsegment
43
+ end
44
+ result
45
+ end
46
+ end
47
+ end
48
+ end
49
+ # rubocop:enable Metrics/MethodLength
50
+ end
51
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../rails/constants"
4
+ require_relative "./method_selector"
5
+
6
+ require "byebug"
7
+
8
+ module Methods
9
+ class InstanceMethodOverrider
10
+ attr_reader :klass
11
+
12
+ def initialize(klass)
13
+ @klass = klass
14
+ end
15
+
16
+ # rubocop:disable Metrics/MethodLength
17
+ def override!(source_locations)
18
+ target_method_names = MethodSelector.new(klass).select_method_names_by_source_location(source_locations)
19
+ target_klass = klass
20
+
21
+ Module.new do
22
+ require_relative "../utils/segment"
23
+ require_relative "../utils/service_observer"
24
+
25
+ target_method_names.each do |method_name|
26
+ define_method(method_name) do |*args, **kwargs, &block|
27
+ begin
28
+ segment = Utils::ServiceObserver.begin_subsegment(
29
+ Utils::Segment.build_name("IM", target_klass.name, method_name)
30
+ )
31
+ segment.add_metadata(:args, Utils::Segment.format_args(args))
32
+ result = if kwargs.empty?
33
+ super(*args, &block)
34
+ else
35
+ segment.metadata[:kwargs] = kwargs
36
+ super(*args, **kwargs, &block)
37
+ end
38
+ rescue StandardError => e
39
+ segment.add_exception(e)
40
+ raise e
41
+ ensure
42
+ Utils::ServiceObserver.end_subsegment
43
+ end
44
+ result
45
+ end
46
+ end
47
+ end
48
+ end
49
+ # rubocop:enable Metrics/MethodLength
50
+ end
51
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ class MethodSelector
4
+ attr_reader :klass
5
+
6
+ def initialize(klass)
7
+ @klass = klass
8
+ end
9
+
10
+ def select_method_names_by_source_location(source_locations)
11
+ all_instance_method_names = klass.instance_methods(false)
12
+ return all_instance_method_names if source_locations.empty?
13
+
14
+ all_instance_method_names.map do |method_name|
15
+ source_location = klass.instance_method(method_name).source_location.first
16
+ next unless source_location.start_with?(*source_locations)
17
+
18
+ method_name
19
+ end.compact
20
+ # NOTE: nextを使ったらnilが配列に入って返ってくるので、compactでnilを除外する
21
+ end
22
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rails
4
+ class Constant
5
+ TARGET_SOURCE_LOCATIONS = [
6
+ "/app/mailers",
7
+ "/app/models",
8
+ "/app/controllers",
9
+ "/app/jobs"
10
+ ].freeze
11
+
12
+ def self.target_source_locations
13
+ TARGET_SOURCE_LOCATIONS.map { |path| XRayMethodTracer.path_prefix + path }
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../methods/instance_method_overrider"
4
+ require_relative "../methods/class_method_overrider"
5
+ require "active_support/core_ext/class/subclasses"
6
+
7
+ module SetUp
8
+ class BaseTraceSetUp
9
+ attr_reader :base_klasses, :klasses, :source_locations
10
+
11
+ def initialize(base_klasses, klasses, source_locations)
12
+ @base_klasses = base_klasses
13
+ @klasses = klasses
14
+ @source_locations = source_locations
15
+ end
16
+
17
+ def apply_trace
18
+ classes_to_override = (base_klasses + klasses).uniq
19
+ classes_to_override.each { |klass| override_methods_in_class(klass) }
20
+
21
+ override_methods_in_subclasses if base_klasses.any?
22
+ end
23
+
24
+ private
25
+
26
+ def override_methods_in_class(klass)
27
+ mod = Methods::InstanceMethodOverrider.new(klass).override!(source_locations)
28
+ klass.prepend(mod)
29
+
30
+ singleton_mod = Methods::ClassMethodOverrider.new(klass).override!(source_locations)
31
+ klass.singleton_class.prepend(singleton_mod)
32
+ end
33
+
34
+ def override_methods_in_subclasses
35
+ base_klasses.uniq.each do |base_klass|
36
+ base_klass.descendants.each { |klass| override_methods_in_class(klass) }
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../rails_trace_set_up"
4
+ require_relative "../pure_ruby_trace_set_up"
5
+
6
+ class MethodTraceSetUpFactory
7
+ def self.create(base_klasses, klasses)
8
+ return SetUp::RailsTraceSetUp.new(base_klasses, klasses) if Object.const_defined?("Rails::VERSION")
9
+
10
+ SetUp::PureRubyTraceSetUp.new(base_klasses, klasses)
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./base_trace_set_up"
4
+
5
+ module SetUp
6
+ attr_reader :base_klasses, :klasses, :source_locations
7
+
8
+ class PureRubyTraceSetUp < BaseTraceSetUp
9
+ def initialize(base_klasses, klasses, source_locations = [])
10
+ super(base_klasses, klasses, source_locations)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./base_trace_set_up"
4
+
5
+ module SetUp
6
+ class RailsTraceSetUp < BaseTraceSetUp
7
+ attr_reader :base_klasses, :klasses, :source_locations
8
+
9
+ def initialize(base_klasses, klasses)
10
+ @source_locations = Rails::Constant.target_source_locations
11
+ super(base_klasses, klasses, source_locations)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Utils
4
+ class Segment
5
+ def self.build_name(prefix, klass_name, method_name)
6
+ sanitize("#{prefix}##{klass_name}##{method_name}")
7
+ end
8
+
9
+ def self.sanitize(name)
10
+ name.delete("?;*()!$~^<>")
11
+ end
12
+
13
+ def self.format_args(args)
14
+ args.map.with_index { |arg, index| ["arg_#{index + 1}", arg] }.to_h
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ # ServiceObserver
4
+ # ===============
5
+ # XrayやDatadogなどのツールカスタムパフォーマンス計装をする際に使用するクラス
6
+ # ===============
7
+ require "aws-xray-sdk"
8
+
9
+ module Utils
10
+ class ServiceObserver
11
+ attr_accessor :segment
12
+
13
+ class << self
14
+ # カスタム計装をする際には、下記のように記述する事で軽装を実施する事ができる
15
+ # ServiceObserver.capture('segment_name') do
16
+ # somefunction()
17
+ # end
18
+ def capture(segment_name)
19
+ begin_subsegment(segment_name)
20
+ yield
21
+ ensure
22
+ end_subsegment
23
+ end
24
+
25
+ def begin_segment_or_subsegment(segment_name)
26
+ return new(begin_subsegment(segment_name)) if current_segment?
27
+
28
+ new(begin_segment(segment_name))
29
+ end
30
+
31
+ def end_segment_or_subsegment
32
+ end_segment if current_segment?
33
+ end_subsegment
34
+ end
35
+
36
+ def begin_subsegment(segment_name)
37
+ XRay.recorder.begin_subsegment(segment_name)
38
+ end
39
+
40
+ def end_subsegment
41
+ XRay.recorder.end_subsegment
42
+ end
43
+
44
+ private
45
+
46
+ def begin_segment(segment_name)
47
+ XRay.recorder.begin_segment(segment_name)
48
+ end
49
+
50
+ def end_segment
51
+ XRay.recorder.end_segment
52
+ end
53
+
54
+ def current_segment
55
+ XRay.recorder.current_segment
56
+ end
57
+
58
+ def current_subsegment
59
+ XRay.recorder.current_subsegment
60
+ end
61
+
62
+ def current_segment?
63
+ !XRay.recorder.current_segment.nil?
64
+ end
65
+
66
+ def current_subsegment?
67
+ !XRay.recorder.current_subsegment.nil?
68
+ end
69
+ end
70
+
71
+ def add_metadata(key, value)
72
+ segment.metadata[key] = value
73
+ end
74
+
75
+ def add_exception(error)
76
+ segment.add_exception(exception: error)
77
+ end
78
+
79
+ private
80
+
81
+ def initialize(segment)
82
+ @segment = segment
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module XrayMethodTracer
4
+ VERSION = "0.1.9"
5
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./xray_method_tracer/set_up/factory/method_trace_set_up_factory"
4
+ require_relative "./xray_method_tracer/loggers/trace_logger"
5
+
6
+ class XRayMethodTracer
7
+ attr_reader :base_klasses, :klasses
8
+
9
+ class << self
10
+ attr_accessor :path_prefix # dockerなどでWORKDIRを変更した場合に対応するためのprefix
11
+ end
12
+
13
+ def initialize(base_klasses: [], klasses: [])
14
+ @base_klasses = base_klasses
15
+ @klasses = klasses
16
+ end
17
+
18
+ def trace
19
+ if empty_klasses?
20
+ Loggers::TraceLogger.new.warn("At least one klasses or base_klasses is required No Tracing will be done")
21
+ return
22
+ end
23
+
24
+ Loggers::TraceLogger.new.info("setup method trace")
25
+ method_trace_setup = MethodTraceSetUpFactory.create(base_klasses, klasses)
26
+ method_trace_setup.apply_trace
27
+ Loggers::TraceLogger.new.info("setup method trace done")
28
+ end
29
+
30
+ private
31
+
32
+ def empty_klasses?
33
+ base_klasses.empty? && klasses.empty?
34
+ end
35
+ end
data/main.rb ADDED
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "aws-xray-sdk"
4
+ require "xray_method_tracer"
5
+ require "byebug"
6
+
7
+ class Main
8
+ def hello_world
9
+ "hello world"
10
+ end
11
+ end
12
+
13
+ user_config = {
14
+ sampling: true,
15
+ name: "pure_ruby_app",
16
+ daemon_address: "127.0.0.1:2000",
17
+ context_missing: "LOG_ERROR",
18
+ patch: %I[net_http aws_sdk]
19
+ }
20
+
21
+ XRay.recorder.configure(user_config)
22
+
23
+ XRayMethodTracer.new(klasses: [Main, Human]).trace
24
+
25
+ puts Main.new.hello_world
@@ -0,0 +1,4 @@
1
+ module XrayMethodTracer
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata CHANGED
@@ -1,22 +1,146 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xray_method_tracer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taishikun0721
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-06 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2024-02-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws-xray-sdk
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.15.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.15.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '13.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '13.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.21'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.21'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.2'
13
111
  description:
14
112
  email:
15
113
  - tai0721abc@gmail.com
16
- executables: []
114
+ executables:
115
+ - xray_method_tracer
17
116
  extensions: []
18
117
  extra_rdoc_files: []
19
- files: []
118
+ files:
119
+ - ".rspec"
120
+ - ".rubocop.yml"
121
+ - ".rubocop_todo.yml"
122
+ - CHANGELOG.md
123
+ - README.md
124
+ - Rakefile
125
+ - docker-compose.yml
126
+ - exe/xray_method_tracer
127
+ - lib/xray_method_tracer.rb
128
+ - lib/xray_method_tracer/README.md
129
+ - lib/xray_method_tracer/loggers/README.md
130
+ - lib/xray_method_tracer/loggers/trace_logger.rb
131
+ - lib/xray_method_tracer/methods/class_method_overrider.rb
132
+ - lib/xray_method_tracer/methods/instance_method_overrider.rb
133
+ - lib/xray_method_tracer/methods/method_selector.rb
134
+ - lib/xray_method_tracer/rails/constants.rb
135
+ - lib/xray_method_tracer/set_up/base_trace_set_up.rb
136
+ - lib/xray_method_tracer/set_up/factory/method_trace_set_up_factory.rb
137
+ - lib/xray_method_tracer/set_up/pure_ruby_trace_set_up.rb
138
+ - lib/xray_method_tracer/set_up/rails_trace_set_up.rb
139
+ - lib/xray_method_tracer/utils/segment.rb
140
+ - lib/xray_method_tracer/utils/service_observer.rb
141
+ - lib/xray_method_tracer/version.rb
142
+ - main.rb
143
+ - sig/xray_method_tracer.rbs
20
144
  homepage: https://github.com/Taishikun0721/xray_method_tracer
21
145
  licenses: []
22
146
  metadata: