meta_request 0.7.2 → 0.7.4

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: 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