action_tracer 0.2.0 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 833bc9f0ef13dc38365b9fed4b4ec1e6d31e3836ae07a44f366e2eb4d198e2d1
4
- data.tar.gz: ae5c7acf603370367d3f77bd7999cfdc51ddce60a886951c4f3b05ca2c4ad442
3
+ metadata.gz: 421d6789ec680cc762a0844c9182d4dd8b03a5c6371c1a1852cb1fd0e2c0746a
4
+ data.tar.gz: b13b98ed44e0cb98df31709135170e6764eb11df43ba528d696cfa253835cec8
5
5
  SHA512:
6
- metadata.gz: 9a8db105412a32d90e32e5f76947b8740dbc0dbdeebca1981304e1d09bd6922778a02f72e6d62c341df003eef120230bd7d0530b1eb8c797ee4c26d78d8fcc43
7
- data.tar.gz: a1a9685cb4d7e8c3fad3560dd645c0ac7044ec3c1824f9a7abe75d4b0b123d905ea4713344231fef1a0ce78cbb5ac121fac22bbf6e92a939868a89e750102a73
6
+ metadata.gz: a97e4728b5ca7f02f7ee5c2bb384edeba87bf5eaac370bdf2dbfdc6833ccc7607595618234df5ac7c7e76c1701fcb18e90ffe4ff886528c75ca0a279432b8562
7
+ data.tar.gz: 1c81fe333dd9815b5dbcd93689d5443e17e39e2bdf4876639e432e66282b5f1f64d993f2f84d9232e065f862ef13c651aacfc58e4fc48b3ad9a19ed07191f0ce
data/.gitignore CHANGED
@@ -6,6 +6,8 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
-
10
- # rspec failure tracking
11
- .rspec_status
9
+ /log/
10
+ /test/log/
11
+ /test/tmp/
12
+ Gemfile.lock
13
+ .byebug_history
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 0.2.3
2
+
3
+ * Deal with Rails7.x.
4
+
5
+ ## 0.2.2
6
+
7
+ * Log filters even when controllers raise error.
8
+
9
+ ## 0.2.1
10
+
11
+ * Fix not to raise error when controllers does not have action definitions.
12
+
1
13
  ## 0.2.0
2
14
 
3
15
  * Stop using TracePoint and just override ActiveSupport::Callbacks::CallTemplate
@@ -23,8 +23,6 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_dependency "activesupport"
25
25
  spec.add_dependency "actionpack"
26
-
27
- spec.add_development_dependency "bundler"
28
- spec.add_development_dependency "rake"
29
- spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "byebug"
27
+ spec.add_development_dependency "minitest"
30
28
  end
@@ -6,6 +6,7 @@ module ActionTracer
6
6
  class << self
7
7
  def log(controller)
8
8
  result = yield
9
+ ensure
9
10
  Filters.build(controller).print
10
11
  applied_filters.clear
11
12
  ActionTracer.logger.info ""
@@ -22,6 +22,27 @@ module ActionTracer
22
22
  end
23
23
  end
24
24
 
25
+ class Action
26
+ def initialize(name:, method:)
27
+ @name = name
28
+ @method = method
29
+ end
30
+
31
+ def self.build(controller)
32
+ method = controller.respond_to?(controller.action_name) ? controller.method(controller.action_name) : nil_method
33
+ new(name: controller.action_name, method: method)
34
+ end
35
+
36
+ def to_a
37
+ [APPLIED[:action], @name, *@method.source_location]
38
+ end
39
+
40
+ def self.nil_method
41
+ method(:p)
42
+ end
43
+ private_class_method :nil_method
44
+ end
45
+
25
46
  class Filters
26
47
  def initialize(before = [], after = [], around = [], action:)
27
48
  @before = before
@@ -30,20 +51,28 @@ module ActionTracer
30
51
  @action = action
31
52
  end
32
53
 
33
- def self.build(controller)
34
- filters = { before: [], after: [], around: [] }
35
- raw_filters = controller.__callbacks[:process_action].send(:chain).group_by(&:kind)
36
- raw_filters.each do |kind, filter|
37
- filters[kind] = filter.map(&:raw_filter).map do |f|
38
- Filter.new(f, method: f.is_a?(Symbol) ? controller.method(f) : f)
54
+ class << self
55
+ def build(controller)
56
+ filters = { before: [], after: [], around: [] }
57
+ raw_filters = controller.__callbacks[:process_action].send(:chain).group_by(&:kind)
58
+ raw_filters.each do |kind, filter|
59
+ filters[kind] = filter.map { |f| f.__send__(filter_method) }.map do |f|
60
+ Filter.new(f, method: f.is_a?(Symbol) ? controller.method(f) : f)
61
+ end
39
62
  end
63
+ new(filters[:before], filters[:after], filters[:around], action: Action.build(controller))
64
+ end
65
+
66
+ private
67
+
68
+ def filter_method
69
+ @filter_method ||= Rails::VERSION::MAJOR > 6 ? :filter : :raw_filter
40
70
  end
41
- new(filters[:before], filters[:after], filters[:around], action: controller.method(controller.action_name))
42
71
  end
43
72
 
44
73
  def print
45
74
  invoked_before.map(&:to_a).each { |filter| ActionTracer.logger.info filter }
46
- ActionTracer.logger.info [APPLIED[:action], @action.name, *@action.source_location]
75
+ ActionTracer.logger.info @action.to_a
47
76
  invoked_after.map(&:to_a).reverse_each { |filter| ActionTracer.logger.info filter }
48
77
  end
49
78
 
@@ -5,20 +5,64 @@ module ActionTracer
5
5
  module ActiveSupport
6
6
  module Callbacks
7
7
  module CallTemplate
8
- def expand(*)
9
- target, block, method, *arguments = super
10
- if target.is_a? ActionController::Base
11
- case method
12
- when :instance_exec # filter is a proc
13
- ActionTracer.applied_filters << block
14
- when String # filter is an object
15
- ActionTracer.applied_filters << block
16
- when Symbol # filter is a method
17
- ActionTracer.applied_filters << method
8
+ if Rails::VERSION::MAJOR > 6
9
+ module MethodCall
10
+ def expand(*)
11
+ super.tap { ActionTracer.applied_filters << @method_name }
12
+ end
13
+
14
+ def make_lambda
15
+ super >> proc { ActionTracer.applied_filters << @method_name }
16
+ end
17
+
18
+ def inverted_lambda
19
+ super >> proc { ActionTracer.applied_filters << @method_name }
20
+ end
21
+ end
22
+
23
+ module ProcCall
24
+ def expand(*)
25
+ super.tap { ActionTracer.applied_filters << @override_target }
26
+ end
27
+
28
+ def make_lambda
29
+ super >> proc { ActionTracer.applied_filters << @override_target }
30
+ end
31
+
32
+ def inverted_lambda
33
+ super >> proc { ActionTracer.applied_filters << @override_target }
34
+ end
35
+ end
36
+
37
+ module InstanceExec
38
+ def expand(*)
39
+ super.tap { ActionTracer.applied_filters << @override_block }
40
+ end
41
+
42
+ def make_lambda
43
+ super >> proc { ActionTracer.applied_filters << @override_block }
44
+ end
45
+
46
+ def inverted_lambda
47
+ super >> proc { ActionTracer.applied_filters << @override_block }
18
48
  end
19
49
  end
50
+ else
51
+ def expand(*)
52
+ target, block, method, *arguments = super
53
+ if target.is_a? ActionController::Base
54
+ case method
55
+ when :instance_exec # filter is a proc
56
+ ActionTracer.applied_filters << block
57
+ when String # filter is an object
58
+ ActionTracer.applied_filters << block
59
+ when Symbol # filter is a method
60
+ ActionTracer.applied_filters << method
61
+ end
62
+ end
20
63
 
21
- [target, block, method, *arguments]
64
+ [target, block, method, *arguments]
65
+ end
22
66
  end
23
67
  end
24
68
  end
@@ -23,7 +23,29 @@ module ActionTracer
23
23
  initializer "action_tracer" do
24
24
  ActiveSupport.on_load(:action_controller) do
25
25
  require "action_tracer/monkey_patches/active_support/callbacks"
26
- ::ActiveSupport::Callbacks::CallTemplate.prepend ActionTracer::MonkeyPatches::ActiveSupport::Callbacks::CallTemplate
26
+ if Rails::VERSION::MAJOR > 6
27
+ [
28
+ ::ActiveSupport::Callbacks::CallTemplate::MethodCall,
29
+ ::ActiveSupport::Callbacks::CallTemplate::ObjectCall,
30
+ ].each do |klass|
31
+ klass.prepend ActionTracer::MonkeyPatches::ActiveSupport::Callbacks::CallTemplate::MethodCall
32
+ end
33
+ [
34
+ ::ActiveSupport::Callbacks::CallTemplate::InstanceExec0,
35
+ ::ActiveSupport::Callbacks::CallTemplate::InstanceExec1,
36
+ ::ActiveSupport::Callbacks::CallTemplate::InstanceExec2,
37
+ ].each do |klass|
38
+ klass.prepend ActionTracer::MonkeyPatches::ActiveSupport::Callbacks::CallTemplate::InstanceExec
39
+ end
40
+ [
41
+ ::ActiveSupport::Callbacks::CallTemplate::ProcCall,
42
+ ].each do |klass|
43
+ klass.prepend ActionTracer::MonkeyPatches::ActiveSupport::Callbacks::CallTemplate::ProcCall
44
+ end
45
+ else
46
+ ::ActiveSupport::Callbacks::CallTemplate.prepend ActionTracer::MonkeyPatches::ActiveSupport::Callbacks::CallTemplate
47
+ end
48
+
27
49
  require "action_tracer/monkey_patches/abstract_controller/callbacks"
28
50
  ::ActionController::Base.prepend ActionTracer::MonkeyPatches::AbstractController::Callbacks
29
51
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActionTracer
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_tracer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - makicamel
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-05 00:00:00.000000000 Z
11
+ date: 2022-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: bundler
42
+ name: byebug
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,21 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
56
+ name: minitest
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - ">="
@@ -113,7 +99,7 @@ homepage: https://github.com/makicamel/action_tracer
113
99
  licenses:
114
100
  - MIT
115
101
  metadata: {}
116
- post_install_message:
102
+ post_install_message:
117
103
  rdoc_options: []
118
104
  require_paths:
119
105
  - lib
@@ -128,8 +114,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
114
  - !ruby/object:Gem::Version
129
115
  version: '0'
130
116
  requirements: []
131
- rubygems_version: 3.1.4
132
- signing_key:
117
+ rubygems_version: 3.2.32
118
+ signing_key:
133
119
  specification_version: 4
134
120
  summary: Log Rails application actions and filters when accepts a request
135
121
  test_files: []