meta_request 0.7.2 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40d50e7981aca25dd87449d817b7a6e223491be3cb2155ad3ee82e081afce02f
4
- data.tar.gz: 8fa75570b5c5b41b546f71aa883bd9df3bdf9b76e4a6a38f5498aa3af641e0fd
3
+ metadata.gz: 9e49088dd0f59edb460bd290208da99950c27d80b53a89ec118eff7e92456081
4
+ data.tar.gz: 176cf5c3b6acc39a80c962e3e1bc6d2d2a7bbce8c492bd5055bcb18d592fc1a5
5
5
  SHA512:
6
- metadata.gz: 22764f1ec9e723a596e56993c802e541263ce1c7902b88c30902d69701a4b47705c404ce85fd3d2240f5fda7f5d1e85f0512f192647d181e10f30a5f13c6e6a0
7
- data.tar.gz: 4c62d0983519f5ae3779759aeba06354e6cb9d4c920feb42f9966be91d0615ca8439c7749109435c3d916f1a40d3718b7c9c5dc99d88b50a04ee44b243b74374
6
+ metadata.gz: 8c91cd99b7cbf908d8aa04fd2781296be408921eb4ea1b4504fa10a586fa216f55f68798bd2f6304ab0e5be3a1300c00347adcc3add55ffb15285298b2db3e5f
7
+ data.tar.gz: 6ef328ed871cc4705fece9ffc7ab0642a8763b40d24848ecedc9e7754a5636164484be069d6655596a1be7be2a8b94fab28fab5916645a577bdb148ca736df0a
@@ -1,17 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MetaRequest
2
4
  class AppNotifications
3
-
4
5
  # these are the specific keys in the cache payload that we display in the
5
6
  # panel view
6
- CACHE_KEY_COLUMNS = [:key, :hit, :options, :type]
7
+ CACHE_KEY_COLUMNS = %i[key hit options type].freeze
7
8
 
8
9
  # define this here so we can pass it in to all of our cache subscribe calls
9
- CACHE_BLOCK = Proc.new {|*args|
10
+ CACHE_BLOCK = proc { |*args|
10
11
  name, start, ending, transaction_id, payload = args
11
12
 
12
13
  # from http://edgeguides.rubyonrails.org/active_support_instrumentation.html#cache-fetch-hit-active-support
13
14
  #
14
- # :super_operation :fetch is added when a read is used with #fetch
15
+ # :super_operation :fetch is added when a read is used with #fetch
15
16
  #
16
17
  # so if :super_operation is present, we'll use it for the type. otherwise
17
18
  # strip (say) 'cache_delete.active_support' down to 'delete'
@@ -36,17 +37,17 @@ module MetaRequest
36
37
  # display sequel events without modification. otherwise the ui would need to
37
38
  # be modified to support a sequel tab (or to change the display name on the
38
39
  # active_record tab when necessary - which maybe makes more sense?)
39
- SQL_EVENT_NAME = "sql.active_record"
40
+ SQL_EVENT_NAME = 'sql.active_record'
40
41
 
41
- SQL_BLOCK = Proc.new {|*args|
42
- name, start, ending, transaction_id, payload = args
42
+ SQL_BLOCK = proc { |*args|
43
+ _name, start, ending, transaction_id, payload = args
43
44
  callsite = Utils.dev_callsite(caller)
44
45
  payload.merge!(callsite) if callsite
45
46
 
46
47
  Event.new(SQL_EVENT_NAME, start, ending, transaction_id, payload)
47
48
  }
48
49
 
49
- VIEW_BLOCK = Proc.new {|*args|
50
+ VIEW_BLOCK = proc { |*args|
50
51
  name, start, ending, transaction_id, payload = args
51
52
  payload[:identifier] = MetaRequest::Utils.sub_source_path(payload[:identifier])
52
53
 
@@ -56,34 +57,32 @@ module MetaRequest
56
57
  # Subscribe to all events relevant to RailsPanel
57
58
  #
58
59
  def self.subscribe
59
- new.
60
- subscribe("meta_request.log").
61
- subscribe("sql.active_record", &SQL_BLOCK).
62
- subscribe("sql.sequel", &SQL_BLOCK).
63
- subscribe("render_partial.action_view", &VIEW_BLOCK).
64
- subscribe("render_template.action_view", &VIEW_BLOCK).
65
- subscribe("process_action.action_controller.exception").
66
- subscribe("process_action.action_controller") do |*args|
60
+ new
61
+ .subscribe('meta_request.log')
62
+ .subscribe('sql.active_record', &SQL_BLOCK)
63
+ .subscribe('sql.sequel', &SQL_BLOCK)
64
+ .subscribe('render_partial.action_view', &VIEW_BLOCK)
65
+ .subscribe('render_template.action_view', &VIEW_BLOCK)
66
+ .subscribe('process_action.action_controller.exception')
67
+ .subscribe('process_action.action_controller') do |*args|
67
68
  name, start, ending, transaction_id, payload = args
68
69
  payload[:status] = '500' if payload[:exception]
69
70
  Event.new(name, start, ending, transaction_id, payload)
70
- end.
71
- subscribe("cache_read.active_support", &CACHE_BLOCK).
72
- subscribe("cache_generate.active_support", &CACHE_BLOCK).
73
- subscribe("cache_fetch_hit.active_support", &CACHE_BLOCK).
74
- subscribe("cache_write.active_support", &CACHE_BLOCK).
75
- subscribe("cache_delete.active_support", &CACHE_BLOCK).
76
- subscribe("cache_exist?.active_support", &CACHE_BLOCK)
71
+ end
72
+ .subscribe('cache_read.active_support', &CACHE_BLOCK)
73
+ .subscribe('cache_generate.active_support', &CACHE_BLOCK)
74
+ .subscribe('cache_fetch_hit.active_support', &CACHE_BLOCK)
75
+ .subscribe('cache_write.active_support', &CACHE_BLOCK)
76
+ .subscribe('cache_delete.active_support', &CACHE_BLOCK)
77
+ .subscribe('cache_exist?.active_support', &CACHE_BLOCK)
77
78
  end
78
79
 
79
80
  def subscribe(event_name)
80
81
  ActiveSupport::Notifications.subscribe(event_name) do |*args|
81
- event = block_given?? yield(*args) : Event.new(*args)
82
+ event = block_given? ? yield(*args) : Event.new(*args)
82
83
  AppRequest.current.events << event if AppRequest.current
83
84
  end
84
85
  self
85
86
  end
86
-
87
87
  end
88
-
89
88
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MetaRequest
2
4
  class AppRequest
3
5
  attr_reader :id, :events
@@ -14,6 +16,5 @@ module MetaRequest
14
16
  def current!
15
17
  Thread.current[:meta_request_id] = self
16
18
  end
17
-
18
19
  end
19
20
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MetaRequest
2
4
  class Config
3
5
  attr_writer :logger, :storage_pool_size, :source_path
@@ -1,13 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support'
2
4
  require 'active_support/json'
3
5
  require 'active_support/core_ext'
4
6
 
5
7
  module MetaRequest
6
-
7
8
  # Subclass of ActiveSupport Event that is JSON encodable
8
9
  #
9
10
  class Event < ActiveSupport::Notifications::Event
10
- NOT_JSON_ENCODABLE = 'Not JSON Encodable'.freeze
11
+ NOT_JSON_ENCODABLE = 'Not JSON Encodable'
11
12
 
12
13
  attr_reader :duration
13
14
 
@@ -27,7 +28,7 @@ module MetaRequest
27
28
  end
28
29
  trace.unshift "#{exception.class} (#{exception.message})"
29
30
  trace.map do |call|
30
- Event.new('process_action.action_controller.exception', 0, 0, nil, {:call => call})
31
+ Event.new('process_action.action_controller.exception', 0, 0, nil, call: call)
31
32
  end
32
33
  end
33
34
 
@@ -35,38 +36,43 @@ module MetaRequest
35
36
 
36
37
  def json_encodable(payload)
37
38
  return {} unless payload.is_a?(Hash)
38
- transform_hash(payload, :deep => true) { |hash, key, value|
39
+
40
+ transform_hash(payload, deep: true) do |hash, key, value|
39
41
  if value.class.to_s == 'ActionDispatch::Http::Headers'
40
42
  value = value.to_h.select { |k, _| k.upcase == k }
41
- elsif defined?(ActiveRecord) && value.is_a?(ActiveRecord::ConnectionAdapters::AbstractAdapter)
43
+ elsif not_encodable?(value)
42
44
  value = NOT_JSON_ENCODABLE
43
45
  end
44
46
 
45
47
  begin
46
- value.to_json(:methods => [:duration])
48
+ value.to_json(methods: [:duration])
47
49
  new_value = value
48
- rescue
50
+ rescue StandardError
49
51
  new_value = NOT_JSON_ENCODABLE
50
52
  end
51
53
  hash[key] = new_value
52
- }.with_indifferent_access
54
+ end.with_indifferent_access
55
+ end
56
+
57
+ def not_encodable?(value)
58
+ (defined?(ActiveRecord) && value.is_a?(ActiveRecord::ConnectionAdapters::AbstractAdapter)) ||
59
+ (defined?(ActionDispatch) &&
60
+ (value.is_a?(ActionDispatch::Request) || value.is_a?(ActionDispatch::Response)))
53
61
  end
54
62
 
55
63
  # https://gist.github.com/dbenhur/1070399
56
- def transform_hash(original, options={}, &block)
64
+ def transform_hash(original, options = {}, &block)
57
65
  options[:safe_descent] ||= {}
58
66
  new_hash = {}
59
67
  options[:safe_descent][original.object_id] = new_hash
60
- original.inject(new_hash) { |result, (key,value)|
61
- if (options[:deep] && Hash === value)
62
- value = options[:safe_descent].fetch( value.object_id ) {
68
+ original.each_with_object(new_hash) do |(key, value), result|
69
+ if options[:deep] && Hash === value
70
+ value = options[:safe_descent].fetch(value.object_id) do
63
71
  transform_hash(value, options, &block)
64
- }
72
+ end
65
73
  end
66
- block.call(result,key,value)
67
- result
68
- }
74
+ block.call(result, key, value)
75
+ end
69
76
  end
70
-
71
77
  end
72
78
  end
@@ -1,44 +1,46 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MetaRequest
2
4
  module LogInterceptor
3
-
4
- def debug(message=nil, *args)
5
+ def debug(message = nil, *args)
5
6
  push_event(:debug, message)
6
7
  super
7
8
  end
8
9
 
9
- def info(message=nil, *args)
10
+ def info(message = nil, *args)
10
11
  push_event(:info, message)
11
12
  super
12
13
  end
13
14
 
14
- def warn(message=nil, *args)
15
+ def warn(message = nil, *args)
15
16
  push_event(:warn, message)
16
17
  super
17
18
  end
18
19
 
19
- def error(message=nil, *args)
20
+ def error(message = nil, *args)
20
21
  push_event(:error, message)
21
22
  super
22
23
  end
23
24
 
24
- def fatal(message=nil, *args)
25
+ def fatal(message = nil, *args)
25
26
  push_event(:fatal, message)
26
27
  super
27
28
  end
28
29
 
29
- def unknown(message=nil, *args)
30
+ def unknown(message = nil, *args)
30
31
  push_event(:unknown, message)
31
32
  super
32
33
  end
33
34
 
34
35
  private
36
+
35
37
  def push_event(level, message)
36
38
  callsite = AppRequest.current && Utils.dev_callsite(caller.drop(1))
37
39
  if callsite
38
40
  payload = callsite.merge(message: message, level: level)
39
41
  AppRequest.current.events << Event.new('meta_request.log', 0, 0, 0, payload)
40
42
  end
41
- rescue Exception => e
43
+ rescue StandardError => e
42
44
  MetaRequest.config.logger.fatal(e.message + "\n " + e.backtrace.join("\n "))
43
45
  end
44
46
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
 
3
5
  module MetaRequest
@@ -8,19 +10,19 @@ module MetaRequest
8
10
  end
9
11
 
10
12
  def call(env)
11
- app_request = AppRequest.new env["action_dispatch.request_id"]
13
+ app_request = AppRequest.new env['action_dispatch.request_id']
12
14
  app_request.current!
13
15
  @app.call(env)
14
- rescue Exception => exception
16
+ rescue StandardError => e
15
17
  if defined?(ActionDispatch::ExceptionWrapper)
16
18
  wrapper = if ActionDispatch::ExceptionWrapper.method_defined? :env
17
- ActionDispatch::ExceptionWrapper.new(env, exception)
19
+ ActionDispatch::ExceptionWrapper.new(env, e)
18
20
  else
19
- ActionDispatch::ExceptionWrapper.new(env['action_dispatch.backtrace_cleaner'], exception)
21
+ ActionDispatch::ExceptionWrapper.new(env['action_dispatch.backtrace_cleaner'], e)
20
22
  end
21
23
  app_request.events.push(*Event.events_for_exception(wrapper))
22
24
  else
23
- app_request.events.push(*Event.events_for_exception(exception))
25
+ app_request.events.push(*Event.events_for_exception(e))
24
26
  end
25
27
  raise
26
28
  ensure
@@ -29,4 +31,3 @@ module MetaRequest
29
31
  end
30
32
  end
31
33
  end
32
-
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rack/contrib/response_headers'
2
4
 
3
5
  module MetaRequest
@@ -29,9 +31,8 @@ module MetaRequest
29
31
  end
30
32
 
31
33
  def assets_prefix
32
- "/#{@app_config.assets.prefix[/\A\/?(.*?)\/?\z/, 1]}/"
34
+ "/#{@app_config.assets.prefix[%r{\A/?(.*?)/?\z}, 1]}/"
33
35
  end
34
-
35
36
  end
36
37
  end
37
38
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MetaRequest
2
4
  module Middlewares
3
5
  class MetaRequestHandler
@@ -6,7 +8,7 @@ module MetaRequest
6
8
  end
7
9
 
8
10
  def call(env)
9
- request_id = env["PATH_INFO"][%r{/__meta_request/(.+)\.json$}, 1]
11
+ request_id = env['PATH_INFO'][%r{/__meta_request/(.+)\.json$}, 1]
10
12
  if request_id
11
13
  events_json(request_id)
12
14
  else
@@ -18,7 +20,7 @@ module MetaRequest
18
20
 
19
21
  def events_json(request_id)
20
22
  events_json = Storage.new(request_id).read
21
- [200, { "Content-Type" => "text/plain; charset=utf-8" }, [events_json]]
23
+ [200, { 'Content-Type' => 'text/plain; charset=utf-8' }, [events_json]]
22
24
  end
23
25
  end
24
26
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MetaRequest
2
4
  module Middlewares
3
- autoload :Headers, "meta_request/middlewares/headers"
4
- autoload :AppRequestHandler, "meta_request/middlewares/app_request_handler"
5
- autoload :MetaRequestHandler, "meta_request/middlewares/meta_request_handler"
5
+ autoload :Headers, 'meta_request/middlewares/headers'
6
+ autoload :AppRequestHandler, 'meta_request/middlewares/app_request_handler'
7
+ autoload :MetaRequestHandler, 'meta_request/middlewares/meta_request_handler'
6
8
  end
7
9
  end
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/railtie'
2
4
 
3
5
  module MetaRequest
4
6
  class Railtie < ::Rails::Railtie
5
-
6
7
  initializer 'meta_request.inject_middlewares' do |app|
7
8
  app.middleware.use Middlewares::MetaRequestHandler
8
9
 
@@ -16,14 +17,11 @@ module MetaRequest
16
17
  end
17
18
 
18
19
  initializer 'meta_request.log_interceptor' do
19
- Rails.logger.extend(LogInterceptor) if Rails.logger
20
+ Rails.logger&.extend(LogInterceptor)
20
21
  end
21
22
 
22
23
  initializer 'meta_request.subscribe_to_notifications' do
23
24
  AppNotifications.subscribe
24
25
  end
25
-
26
26
  end
27
27
  end
28
-
29
-
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MetaRequest
2
4
  class Storage
3
5
  attr_reader :key
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MetaRequest
2
4
  module Utils
3
- extend self
5
+ module_function
4
6
 
5
7
  def dev_callsite(caller)
6
8
  app_line = caller.detect { |c| c.start_with? MetaRequest.rails_root }
@@ -19,6 +21,7 @@ module MetaRequest
19
21
  rails_root = MetaRequest.rails_root
20
22
  source_path = MetaRequest.config.source_path
21
23
  return path if rails_root == source_path
24
+
22
25
  path.sub(rails_root, source_path)
23
26
  end
24
27
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MetaRequest
2
- VERSION = Gem.loaded_specs["meta_request"].version.to_s
4
+ VERSION = Gem.loaded_specs['meta_request'].version.to_s
3
5
  end
data/lib/meta_request.rb CHANGED
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MetaRequest
2
- autoload :VERSION, "meta_request/version"
3
- autoload :Config, "meta_request/config"
4
- autoload :Event, "meta_request/event"
5
- autoload :AppRequest, "meta_request/app_request"
6
- autoload :Storage, "meta_request/storage"
7
- autoload :Middlewares, "meta_request/middlewares"
8
- autoload :LogInterceptor, "meta_request/log_interceptor"
9
- autoload :AppNotifications, "meta_request/app_notifications"
10
- autoload :Utils, "meta_request/utils"
4
+ autoload :VERSION, 'meta_request/version'
5
+ autoload :Config, 'meta_request/config'
6
+ autoload :Event, 'meta_request/event'
7
+ autoload :AppRequest, 'meta_request/app_request'
8
+ autoload :Storage, 'meta_request/storage'
9
+ autoload :Middlewares, 'meta_request/middlewares'
10
+ autoload :LogInterceptor, 'meta_request/log_interceptor'
11
+ autoload :AppNotifications, 'meta_request/app_notifications'
12
+ autoload :Utils, 'meta_request/utils'
11
13
 
12
14
  def self.config
13
15
  @config ||= Config.new
@@ -24,4 +26,4 @@ module MetaRequest
24
26
  end
25
27
  end
26
28
 
27
- require "meta_request/railtie"
29
+ require 'meta_request/railtie'
metadata CHANGED
@@ -1,55 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meta_request
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dejan Simic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-03 00:00:00.000000000 Z
11
+ date: 2023-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: railties
14
+ name: rack-contrib
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 3.0.0
19
+ version: '1.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7'
22
+ version: '3'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 3.0.0
29
+ version: '1.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7'
32
+ version: '3'
33
33
  - !ruby/object:Gem::Dependency
34
- name: rack-contrib
34
+ name: railties
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '1.1'
39
+ version: 3.0.0
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '3'
42
+ version: '7.1'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '1.1'
49
+ version: 3.0.0
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '3'
52
+ version: '7.1'
53
+ - !ruby/object:Gem::Dependency
54
+ name: rspec
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 3.8.0
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: 3.8.0
67
+ - !ruby/object:Gem::Dependency
68
+ name: rubocop
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: 0.74.0
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: 0.74.0
53
81
  description: Supporting gem for Rails Panel (Google Chrome extension for Rails development)
54
82
  email: desimic@gmail.com
55
83
  executables: []
@@ -90,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
118
  - !ruby/object:Gem::Version
91
119
  version: '0'
92
120
  requirements: []
93
- rubygems_version: 3.0.3
121
+ rubygems_version: 3.3.7
94
122
  signing_key:
95
123
  specification_version: 4
96
124
  summary: Request your Rails request