rails_spotlight 0.4.2 → 0.5.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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -4
  3. data/Dockerfile +1 -2
  4. data/Dockerfile-rails-6.0 +2 -2
  5. data/Dockerfile-rails-6.1 +2 -2
  6. data/Dockerfile-rails-7.1 +44 -0
  7. data/{Dockerfile-rails-7.0 → Dockerfile-rails-8.0} +3 -3
  8. data/{Dockerfile-rails-5.2 → Dockerfile-rails-8.0.2} +10 -5
  9. data/README.md +47 -15
  10. data/docker-compose.yml +14 -9
  11. data/docs/assets/images/sql_execution_toggle.gif +0 -0
  12. data/fake_spec_res/config/rails_spotlight.yml +47 -0
  13. data/fake_spec_res/rails_spotlight_spec.rb +23 -5
  14. data/lib/rails_spotlight/app_notifications.rb +2 -3
  15. data/lib/rails_spotlight/channels/handlers/{live_console_handler.rb → console_handler.rb} +3 -3
  16. data/lib/rails_spotlight/channels/handlers/logs_handler.rb +1 -1
  17. data/lib/rails_spotlight/channels/handlers.rb +3 -3
  18. data/lib/rails_spotlight/channels/spotlight_channel.rb +20 -1
  19. data/lib/rails_spotlight/configuration.rb +40 -58
  20. data/lib/rails_spotlight/event.rb +21 -5
  21. data/lib/rails_spotlight/log_interceptor.rb +34 -57
  22. data/lib/rails_spotlight/middlewares/handlers/base_action_handler.rb +45 -55
  23. data/lib/rails_spotlight/middlewares/handlers/code_analysis_action_handler.rb +8 -13
  24. data/lib/rails_spotlight/middlewares/handlers/console_action_handler.rb +8 -12
  25. data/lib/rails_spotlight/middlewares/handlers/directory_index_action_handler.rb +16 -27
  26. data/lib/rails_spotlight/middlewares/handlers/file_action_handler.rb +21 -55
  27. data/lib/rails_spotlight/middlewares/handlers/meta_action_handler.rb +3 -8
  28. data/lib/rails_spotlight/middlewares/handlers/not_found_action_handler.rb +1 -1
  29. data/lib/rails_spotlight/middlewares/handlers/sql_action_handler.rb +18 -35
  30. data/lib/rails_spotlight/middlewares/handlers/verify_action_handler.rb +1 -3
  31. data/lib/rails_spotlight/middlewares/header_marker.rb +1 -3
  32. data/lib/rails_spotlight/middlewares/request_completed.rb +2 -2
  33. data/lib/rails_spotlight/rails_command_executor.rb +3 -5
  34. data/lib/rails_spotlight/railtie.rb +2 -4
  35. data/lib/rails_spotlight/render_view_reporter.rb +3 -3
  36. data/lib/rails_spotlight/storage.rb +4 -14
  37. data/lib/rails_spotlight/utils.rb +1 -1
  38. data/lib/rails_spotlight/version.rb +1 -1
  39. data/lib/tasks/init.rake +26 -6
  40. metadata +16 -16
@@ -5,26 +5,20 @@ module RailsSpotlight
5
5
  module Handlers
6
6
  class FileActionHandler < BaseActionHandler
7
7
  def execute
8
- raise NotFound, 'File not found' unless path_valid?
8
+ raise Forbidden.new('File manager is disabled', code: :disabled_file_manager_settings) unless enabled?
9
+ raise NotFound.new('File not found', code: :file_not_found) unless path_valid?
9
10
 
10
- if write_mode?
11
- try_to_update_file
12
- else
13
- File.read(file_path)
11
+ begin
12
+ write_mode? ? try_to_update_file : File.read(file_path)
13
+ rescue => e # rubocop:disable Style/RescueStandardError
14
+ raise UnprocessableEntity.new(e.message, code: write_mode? ? :file_update_error : :file_read_error)
14
15
  end
15
- rescue => e # rubocop:disable Style/RescueStandardError
16
- raise UnprocessableEntity, e.message
17
16
  end
18
17
 
19
18
  private
20
19
 
21
- def text_response_body
22
- File.read(file_path)
23
- end
24
-
25
- def new_content
26
- body_fetch('content')
27
- end
20
+ def text_response_body = File.read(file_path)
21
+ def new_content = body_fetch('content')
28
22
 
29
23
  def json_response_body
30
24
  {
@@ -33,11 +27,7 @@ module RailsSpotlight
33
27
  in_project: file_in_project?,
34
28
  relative_path: Pathname.new(file_path).relative_path_from(::RailsSpotlight.config.rails_root).to_s,
35
29
  root_path: ::RailsSpotlight.config.rails_root
36
- }.merge(write_mode? ? { new_content: new_content } : {})
37
- end
38
-
39
- def write_mode?
40
- request_mode == 'write'
30
+ }.merge(write_mode? ? { new_content: } : {})
41
31
  end
42
32
 
43
33
  def try_to_update_file
@@ -56,13 +46,9 @@ module RailsSpotlight
56
46
  'Editing files is blocked. Please check the Rails spotlight BLOCK_EDITING_FILES_OUTSIDE_OF_THE_PROJECT configuration.'
57
47
  end
58
48
 
59
- def request_mode
60
- @request_mode ||= body_fetch('mode', 'read')
61
- end
62
-
63
- def path_valid?
64
- File.exist?(file_path)
65
- end
49
+ def write_mode? = request_mode == 'write'
50
+ def request_mode = @request_mode ||= body_fetch('mode', 'read')
51
+ def path_valid? = File.exist?(file_path)
66
52
 
67
53
  def file_path
68
54
  @file_path ||= if path_file_in_project?
@@ -78,29 +64,13 @@ module RailsSpotlight
78
64
  end
79
65
  end
80
66
 
81
- def original_file_path
82
- @original_file_path ||= body_fetch('file')
83
- end
67
+ def original_file_path = @original_file_path ||= body_fetch('file')
84
68
 
85
- def path_file_in_project?
86
- @path_file_in_project ||= original_file_path.start_with?(::RailsSpotlight.config.rails_root)
87
- end
88
-
89
- def file_in_project?
90
- File.exist?(File.join(::RailsSpotlight.config.rails_root, original_file_path))
91
- end
92
-
93
- def file_in_project_app_dir?
94
- File.exist?(File.join(::RailsSpotlight.config.rails_root, 'app', original_file_path))
95
- end
96
-
97
- def file_in_project_views_dir?
98
- File.exist?(File.join(::RailsSpotlight.config.rails_root, 'app', 'views', original_file_path))
99
- end
100
-
101
- def file_outside_project?
102
- !file_in_project? && File.exist?(original_file_path)
103
- end
69
+ def path_file_in_project? = @path_file_in_project ||= original_file_path.start_with?(::RailsSpotlight.config.rails_root)
70
+ def file_in_project? = File.exist?(File.join(::RailsSpotlight.config.rails_root, original_file_path))
71
+ def file_in_project_app_dir? = File.exist?(File.join(::RailsSpotlight.config.rails_root, 'app', original_file_path))
72
+ def file_in_project_views_dir? = File.exist?(File.join(::RailsSpotlight.config.rails_root, 'app', 'views', original_file_path))
73
+ def file_outside_project? = !file_in_project? && File.exist?(original_file_path)
104
74
 
105
75
  def editing_outside_project_file_is_blocked?(file_path)
106
76
  return false unless file_outside_project?
@@ -109,13 +79,9 @@ module RailsSpotlight
109
79
  !file_path.start_with?(::RailsSpotlight.config.rails_root)
110
80
  end
111
81
 
112
- def block_editing_files?
113
- ::RailsSpotlight.config.block_editing_files
114
- end
115
-
116
- def block_editing_files_outside_of_the_project?
117
- ::RailsSpotlight.config.block_editing_files_outside_of_the_project
118
- end
82
+ def block_editing_files? = ::RailsSpotlight.config.block_editing_files
83
+ def block_editing_files_outside_of_the_project? = ::RailsSpotlight.config.block_editing_files_outside_of_the_project
84
+ def enabled? = ::RailsSpotlight.config.file_manager_enabled
119
85
  end
120
86
  end
121
87
  end
@@ -10,18 +10,13 @@ module RailsSpotlight
10
10
 
11
11
  def json_response_body
12
12
  {
13
- events: events,
13
+ events:,
14
14
  root_path: ::RailsSpotlight.config.rails_root
15
15
  }
16
16
  end
17
17
 
18
- def id
19
- @id ||= request.params['id']
20
- end
21
-
22
- def events
23
- @events ||= Storage.new(id).read || []
24
- end
18
+ def id = @id ||= request.params['id']
19
+ def events = @events ||= Storage.new(id).read || []
25
20
  end
26
21
  end
27
22
  end
@@ -5,7 +5,7 @@ module RailsSpotlight
5
5
  module Handlers
6
6
  class NotFoundActionHandler < BaseActionHandler
7
7
  def execute
8
- raise NotFound, 'Not found'
8
+ raise NotFound.new('Not found', code: :action_not_found)
9
9
  end
10
10
  end
11
11
  end
@@ -5,10 +5,11 @@ module RailsSpotlight
5
5
  module Handlers
6
6
  class SqlActionHandler < BaseActionHandler
7
7
  def execute
8
- return transaction unless ActiveSupport.const_defined?('ExecutionContext')
8
+ raise Forbidden.new('SQL is disabled', code: :disabled_sql_console_settings) unless enabled?
9
+ return transactional { transaction } unless ActiveSupport.const_defined?('ExecutionContext')
9
10
 
10
11
  ActiveSupport::ExecutionContext.set(rails_spotlight: request_id) do
11
- transaction
12
+ transactional { transaction }
12
13
  end
13
14
  end
14
15
 
@@ -18,7 +19,7 @@ module RailsSpotlight
18
19
  return block.call if force_execution?
19
20
 
20
21
  ActiveRecord::Base.transaction do
21
- begin
22
+ begin # rubocop:disable Style/RedundantBegin
22
23
  block.call
23
24
  ensure
24
25
  raise ActiveRecord::Rollback
@@ -36,9 +37,7 @@ module RailsSpotlight
36
37
  end
37
38
  end
38
39
 
39
- def run # rubocop:disable Metrics/AbcSize
40
- RailsSpotlight.config.logger && RailsSpotlight.config.logger.info("Executing query: #{query}") # rubocop:disable Style/SafeNavigation
41
-
40
+ def run
42
41
  return self.result = ActiveRecord::Base.connection.exec_query(query) if connection_options.blank? || !ActiveRecord::Base.respond_to?(:connects_to)
43
42
 
44
43
  connections = ActiveRecord::Base.connects_to(**connection_options)
@@ -53,50 +52,34 @@ module RailsSpotlight
53
52
 
54
53
  def json_response_body
55
54
  {
56
- query: query,
57
- result: result,
58
- logs: logs,
55
+ query:, result:, logs:,
59
56
  error: error.present? ? error.inspect : nil,
60
57
  query_mode: force_execution? ? 'force' : 'default'
61
58
  }
62
59
  end
63
60
 
64
61
  def logger(_, started, finished, unique_id, payload)
65
- logs << { time: started, end: finished, unique_id: unique_id }.merge(
62
+ logs << { time: started, end: finished, unique_id: }.merge(
66
63
  payload.as_json(except: %i[connection method name filename line transaction])
67
64
  )
68
65
  end
69
66
 
70
- def logs
71
- @logs ||= []
72
- end
73
-
74
- def query
75
- @query ||= body_fetch('query')
76
- end
77
-
78
- def raw_options
79
- @raw_options ||= body_fetch('options', {}) || {}
80
- end
81
-
82
- def mode
83
- @mode ||= body_fetch('mode', 'default')
84
- end
85
-
86
- def use
87
- @use ||= { 'shard' => 'default', 'role' => 'reading' }.merge(raw_options.fetch('use', {}))
88
- end
67
+ def logs = @logs ||= []
68
+ def query = @query ||= body_fetch('query')
69
+ def raw_options = @raw_options ||= body_fetch('options', {}) || {}
70
+ def mode = @mode ||= body_fetch('mode', 'default')
71
+ def use = @use ||= { 'shard' => 'default', 'role' => 'reading' }.merge(raw_options.fetch('use', {}))
89
72
 
73
+ # TODO: Check for each rails version
90
74
  def connection_options
91
75
  @connection_options ||= raw_options
92
- .symbolize_keys
93
- .slice(:database, :shards)
94
- .reject { |_, v| v.nil? || (!v.is_a?(TrueClass) && !v.is_a?(FalseClass) && v.empty?) } # TODO: Check for each rails version
76
+ .symbolize_keys
77
+ .slice(:database, :shards)
78
+ .reject { |_, v| v.nil? || (!v.is_a?(TrueClass) && !v.is_a?(FalseClass) && v.empty?) }
95
79
  end
96
80
 
97
- def force_execution?
98
- @force_execution ||= mode == 'force'
99
- end
81
+ def force_execution? = @force_execution ||= mode == 'force'
82
+ def enabled? = ::RailsSpotlight.config.sql_console_enabled?
100
83
  end
101
84
  end
102
85
  end
@@ -12,9 +12,7 @@ module RailsSpotlight
12
12
  "Rails Spotlight is working!\nRails version: #{Rails.version}\nRails environment: #{Rails.env}"
13
13
  end
14
14
 
15
- def skip_project_validation?
16
- true
17
- end
15
+ def skip_project_validation? = true
18
16
 
19
17
  def json_response_body
20
18
  {
@@ -25,9 +25,7 @@ module RailsSpotlight
25
25
 
26
26
  attr_reader :app, :app_config
27
27
 
28
- def default_skip_paths
29
- %w[/__better_errors /__meta_request]
30
- end
28
+ def default_skip_paths = %w[/__better_errors /__meta_request]
31
29
  end
32
30
  end
33
31
  end
@@ -49,8 +49,8 @@ module RailsSpotlight
49
49
  payload: {
50
50
  id: rails_spotlight_request_id,
51
51
  http_method: env['REQUEST_METHOD'],
52
- host: host,
53
- url: url,
52
+ host:,
53
+ url:,
54
54
  format: request.format.symbol,
55
55
  controller: request.path_parameters[:controller],
56
56
  action: request.path_parameters[:action]
@@ -31,15 +31,13 @@ module RailsSpotlight
31
31
 
32
32
  attr_reader :result, :console, :error, :syntax_error
33
33
 
34
- def execution_successful?
35
- error.nil?
36
- end
34
+ def execution_successful? = error.nil?
37
35
 
38
36
  def result_as_json(inspect_types: false)
39
37
  if error
40
38
  {
41
39
  status: :error,
42
- syntax_error: syntax_error,
40
+ syntax_error:,
43
41
  error: error.respond_to?(:message) ? error.message : error.to_s,
44
42
  backtrace: error.respond_to?(:backtrace) ? error.backtrace : nil
45
43
  }
@@ -50,7 +48,7 @@ module RailsSpotlight
50
48
  raw: result,
51
49
  type: result.class.name,
52
50
  types: result_inspect_types(inspect_types, result),
53
- console: console
51
+ console:
54
52
  }
55
53
  end
56
54
  end
@@ -32,7 +32,7 @@ module RailsSpotlight
32
32
 
33
33
  require 'rails_spotlight/channels/spotlight_channel' if ::RailsSpotlight.config.request_completed_broadcast_enabled?
34
34
 
35
- app.routes.draw { mount ActionCable.server => ::RailsSpotlight.config.action_cable_mount_path || '/cable' } if ::RailsSpotlight.config.auto_mount_action_cable?
35
+ app.routes.draw { mount ActionCable.server => ::RailsSpotlight.config.cable_mount_path || '/cable' } if ::RailsSpotlight.config.auto_mount_cable?
36
36
  end
37
37
  end
38
38
 
@@ -62,8 +62,6 @@ module RailsSpotlight
62
62
  end
63
63
  end
64
64
 
65
- def app
66
- Rails.application
67
- end
65
+ def app = Rails.application
68
66
  end
69
67
  end
@@ -5,10 +5,10 @@ module RailsSpotlight
5
5
  def self.report_rendered_view_locals(view, locals: nil, params: nil, show_devise: false, skip_vars: [], metadata: {})
6
6
  ActiveSupport::Notifications.instrument(
7
7
  'render_view.locals',
8
- params: params,
8
+ params:,
9
9
  locals: serialize_as_json(locals),
10
- instance_variables: dev_instance_variables(view, skip_vars: skip_vars, show_devise: show_devise),
11
- metadata: metadata
10
+ instance_variables: dev_instance_variables(view, skip_vars:, show_devise:),
11
+ metadata:
12
12
  )
13
13
  end
14
14
 
@@ -15,19 +15,14 @@ module RailsSpotlight
15
15
  maintain_file_pool(RailsSpotlight.config.storage_pool_size)
16
16
  end
17
17
 
18
- def read
19
- # avoid FileNotFound error
20
- File.exist?(json_file) ? File.read(json_file) : '[]'
21
- end
18
+ def read = File.exist?(json_file) ? File.read(json_file) : '[]'
22
19
 
23
20
  private
24
21
 
25
22
  def maintain_file_pool(size)
26
23
  files = Dir["#{dir_path}/*.json"]
27
24
  files = files.sort_by { |f| -file_ctime(f) }
28
- (files[size..] || []).each do |file|
29
- FileUtils.rm_f(file)
30
- end
25
+ (files[size..] || []).each { |file| FileUtils.rm_f(file) }
31
26
  end
32
27
 
33
28
  def file_ctime(file)
@@ -36,12 +31,7 @@ module RailsSpotlight
36
31
  0
37
32
  end
38
33
 
39
- def json_file
40
- File.join(dir_path, "#{key}.json")
41
- end
42
-
43
- def dir_path
44
- @dir_path ||= RailsSpotlight.config.storage_path
45
- end
34
+ def json_file = @json_file ||= File.join(dir_path, "#{key}.json")
35
+ def dir_path = @dir_path ||= RailsSpotlight.config.storage_path
46
36
  end
47
37
  end
@@ -13,7 +13,7 @@ module RailsSpotlight
13
13
  {
14
14
  filename: sub_source_path(filename),
15
15
  line: line.to_i,
16
- method: method
16
+ method:
17
17
  }
18
18
  rescue # rubocop:disable Style/RescueStandardError, Lint/SuppressedException
19
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsSpotlight
4
- VERSION = '0.4.2'
4
+ VERSION = '0.5.0'
5
5
  end
data/lib/tasks/init.rake CHANGED
@@ -16,26 +16,46 @@ namespace :rails_spotlight do # rubocop:disable Metrics/BlockLength
16
16
  STORAGE_PATH: <%=Rails.root.join('tmp', 'data', 'rails_spotlight')%>
17
17
  STORAGE_POOL_SIZE: 20
18
18
  LOGGER: <%=Logger.new(Rails.root.join('log', 'rails_spotlight.log'))%>
19
+
20
+ # Security configuration
21
+ DATA_ACCESS_TOKEN:
22
+ RAILS_SPOTLIGHT_PROJECT:
23
+
19
24
  # Prevent from processing and sending some data to the extension
20
25
  MIDDLEWARE_SKIPPED_PATHS: []
21
26
  NOT_ENCODABLE_EVENT_VALUES:
22
27
  SKIP_RENDERED_IVARS: []
28
+
29
+ # Features
30
+ FILE_MANAGER_ENABLED: true
31
+ RUBOCOP_ENABLED: true
32
+ SQL_CONSOLE_ENABLED: true
33
+ IRB_CONSOLE_ENABLED: true
34
+
23
35
  # File manager configuration
24
36
  BLOCK_EDITING_FILES: false
25
37
  BLOCK_EDITING_FILES_OUTSIDE_OF_THE_PROJECT: true
26
38
  DIRECTORY_INDEX_IGNORE: ['/.git', '**/*.lock', '**/.DS_Store', '/app/assets/images/**', '/app/assets/fonts/**', '/app/assets/builds/**']
39
+
40
+ # Rubocop configuration
27
41
  RUBOCOP_CONFIG_PATH: '.rubocop.yml'
42
+
28
43
  # Workarounds of CSP restrictions for form JS execution from the extension
29
44
  FORM_JS_EXECUTION_TOKEN: <%= Digest::MD5.hexdigest(Rails.application.class.respond_to?(:module_parent_name) ? Rails.application.class.module_parent_name : Rails.application.class.parent_name)%>
30
- # Rest of the configuration is required for ActionCable. It will be disabled automatically in when ActionCable is not available.
31
- AUTO_MOUNT_ACTION_CABLE: false
32
- ACTION_CABLE_MOUNT_PATH: /cable
45
+
33
46
  # Required for all action cable features
34
- USE_ACTION_CABLE: false
47
+ USE_CABLE: false
48
+
49
+ # Rest of the configuration is required for ActionCable. It will be disabled automatically in when ActionCable is not available.
50
+ AUTO_MOUNT_CABLE: false
51
+ CABLE_MOUNT_PATH: /cable
52
+
35
53
  # Experimental feature.
36
- LIVE_LOGS_ENABLED: false
54
+ CABLE_LOGS_ENABLED: false
37
55
  DEFAULT_RS_SRC: default
38
- LIVE_CONSOLE_ENABLED: false
56
+
57
+ CABLE_CONSOLE_ENABLED: false
58
+
39
59
  REQUEST_COMPLETED_BROADCAST_ENABLED: false
40
60
  YAML
41
61
 
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_spotlight
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pawel Niemczyk
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-11-02 00:00:00.000000000 Z
10
+ date: 2025-03-16 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rack-contrib
@@ -16,7 +15,7 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '1.1'
18
+ version: '2.0'
20
19
  - - "<"
21
20
  - !ruby/object:Gem::Version
22
21
  version: '3'
@@ -26,7 +25,7 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- version: '1.1'
28
+ version: '2.0'
30
29
  - - "<"
31
30
  - !ruby/object:Gem::Version
32
31
  version: '3'
@@ -36,20 +35,20 @@ dependencies:
36
35
  requirements:
37
36
  - - ">="
38
37
  - !ruby/object:Gem::Version
39
- version: 3.0.0
38
+ version: '6.0'
40
39
  - - "<"
41
40
  - !ruby/object:Gem::Version
42
- version: '8.1'
41
+ version: '9'
43
42
  type: :runtime
44
43
  prerelease: false
45
44
  version_requirements: !ruby/object:Gem::Requirement
46
45
  requirements:
47
46
  - - ">="
48
47
  - !ruby/object:Gem::Version
49
- version: 3.0.0
48
+ version: '6.0'
50
49
  - - "<"
51
50
  - !ruby/object:Gem::Version
52
- version: '8.1'
51
+ version: '9'
53
52
  - !ruby/object:Gem::Dependency
54
53
  name: action-cable-testing
55
54
  requirement: !ruby/object:Gem::Requirement
@@ -218,10 +217,11 @@ files:
218
217
  - CHANGELOG.md
219
218
  - CODE_OF_CONDUCT.md
220
219
  - Dockerfile
221
- - Dockerfile-rails-5.2
222
220
  - Dockerfile-rails-6.0
223
221
  - Dockerfile-rails-6.1
224
- - Dockerfile-rails-7.0
222
+ - Dockerfile-rails-7.1
223
+ - Dockerfile-rails-8.0
224
+ - Dockerfile-rails-8.0.2
225
225
  - Gemfile
226
226
  - Guardfile
227
227
  - LICENSE.txt
@@ -231,7 +231,9 @@ files:
231
231
  - docker-compose.dev.yml
232
232
  - docker-compose.yml
233
233
  - docker-variables.env
234
+ - docs/assets/images/sql_execution_toggle.gif
234
235
  - exe/rails_spotlight
236
+ - fake_spec_res/config/rails_spotlight.yml
235
237
  - fake_spec_res/dummy/index.html
236
238
  - fake_spec_res/dummy_controller.rb
237
239
  - fake_spec_res/rails_spotlight_spec.rb
@@ -241,7 +243,7 @@ files:
241
243
  - lib/rails_spotlight/app_request.rb
242
244
  - lib/rails_spotlight/channels.rb
243
245
  - lib/rails_spotlight/channels/handlers.rb
244
- - lib/rails_spotlight/channels/handlers/live_console_handler.rb
246
+ - lib/rails_spotlight/channels/handlers/console_handler.rb
245
247
  - lib/rails_spotlight/channels/handlers/logs_handler.rb
246
248
  - lib/rails_spotlight/channels/silence_action_cable_broadcaster_logging.rb
247
249
  - lib/rails_spotlight/channels/spotlight_channel.rb
@@ -279,7 +281,6 @@ metadata:
279
281
  source_code_uri: https://github.com/pniemczyk/rails_spotlight
280
282
  changelog_uri: https://github.com/pniemczyk/rails_spotlight/blob/master/CHANGELOG.md
281
283
  rubygems_mfa_required: 'true'
282
- post_install_message:
283
284
  rdoc_options: []
284
285
  require_paths:
285
286
  - lib
@@ -287,15 +288,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
287
288
  requirements:
288
289
  - - ">="
289
290
  - !ruby/object:Gem::Version
290
- version: 2.6.0
291
+ version: '3.1'
291
292
  required_rubygems_version: !ruby/object:Gem::Requirement
292
293
  requirements:
293
294
  - - ">="
294
295
  - !ruby/object:Gem::Version
295
296
  version: '0'
296
297
  requirements: []
297
- rubygems_version: 3.4.12
298
- signing_key:
298
+ rubygems_version: 3.6.3
299
299
  specification_version: 4
300
300
  summary: Lets have a look at your rails application in details
301
301
  test_files: []