sentry-rails 6.6.2 → 7.0.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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/Gemfile +50 -0
  4. data/README.md +1 -1
  5. data/bin/test +12 -386
  6. data/bin/test_old +389 -0
  7. data/gemfiles/ruby-2.7_rails-5.2.0.gemfile.lock +266 -0
  8. data/gemfiles/ruby-2.7_rails-6.0.0.gemfile.lock +282 -0
  9. data/gemfiles/ruby-2.7_rails-6.1.0.gemfile.lock +294 -0
  10. data/gemfiles/ruby-2.7_rails-7.0.0.gemfile.lock +311 -0
  11. data/gemfiles/ruby-2.7_rails-7.1.0.gemfile.lock +348 -0
  12. data/gemfiles/ruby-3.0_rails-6.1.0.gemfile.lock +362 -0
  13. data/gemfiles/ruby-3.0_rails-7.0.0.gemfile.lock +379 -0
  14. data/gemfiles/ruby-3.0_rails-7.1.0.gemfile.lock +405 -0
  15. data/gemfiles/ruby-3.1_rails-6.1.0.gemfile.lock +493 -0
  16. data/gemfiles/ruby-3.1_rails-7.0.0.gemfile.lock +513 -0
  17. data/gemfiles/ruby-3.1_rails-7.1.0.gemfile.lock +547 -0
  18. data/gemfiles/ruby-3.1_rails-7.2.0.gemfile.lock +541 -0
  19. data/gemfiles/ruby-3.2_rails-6.1.0.gemfile.lock +493 -0
  20. data/gemfiles/ruby-3.2_rails-7.0.0.gemfile.lock +511 -0
  21. data/gemfiles/ruby-3.2_rails-7.1.0.gemfile.lock +553 -0
  22. data/gemfiles/ruby-3.2_rails-7.2.0.gemfile.lock +545 -0
  23. data/gemfiles/ruby-3.2_rails-8.0.0.gemfile.lock +544 -0
  24. data/gemfiles/ruby-3.3_rails-6.1.0.gemfile.lock +493 -0
  25. data/gemfiles/ruby-3.3_rails-7.0.0.gemfile.lock +511 -0
  26. data/gemfiles/ruby-3.3_rails-7.1.0.gemfile.lock +553 -0
  27. data/gemfiles/ruby-3.3_rails-7.2.0.gemfile.lock +545 -0
  28. data/gemfiles/ruby-3.3_rails-8.0.0.gemfile.lock +544 -0
  29. data/gemfiles/ruby-3.4_rails-7.1.0.gemfile.lock +534 -0
  30. data/gemfiles/ruby-3.4_rails-7.2.0.gemfile.lock +528 -0
  31. data/gemfiles/ruby-3.4_rails-8.0.0.gemfile.lock +523 -0
  32. data/gemfiles/ruby-3.4_rails-8.1.3.gemfile.lock +527 -0
  33. data/gemfiles/ruby-4.0_rails-6.1.0.gemfile.lock +476 -0
  34. data/gemfiles/ruby-4.0_rails-7.0.0.gemfile.lock +492 -0
  35. data/gemfiles/ruby-4.0_rails-7.1.0.gemfile.lock +534 -0
  36. data/gemfiles/ruby-4.0_rails-8.0.0.gemfile.lock +523 -0
  37. data/gemfiles/ruby-4.0_rails-8.1.3.gemfile.lock +527 -0
  38. data/gemfiles/ruby-jruby-9.4.14.0_rails-6.1.0.gemfile.lock +369 -0
  39. data/gemfiles/ruby-jruby-9.4.14.0_rails-7.0.0.gemfile.lock +391 -0
  40. data/gemfiles/ruby-jruby-9.4.14.0_rails-7.1.0.gemfile.lock +425 -0
  41. data/lib/sentry/rails/active_job.rb +188 -29
  42. data/lib/sentry/rails/breadcrumb/active_support_logger.rb +30 -0
  43. data/lib/sentry/rails/capture_exceptions.rb +8 -1
  44. data/lib/sentry/rails/configuration.rb +14 -2
  45. data/lib/sentry/rails/controller_transaction.rb +24 -3
  46. data/lib/sentry/rails/error_reporter_context.rb +24 -0
  47. data/lib/sentry/rails/log_subscribers/action_controller_subscriber.rb +3 -7
  48. data/lib/sentry/rails/log_subscribers/action_mailer_subscriber.rb +5 -9
  49. data/lib/sentry/rails/log_subscribers/active_job_subscriber.rb +5 -7
  50. data/lib/sentry/rails/log_subscribers/active_record_subscriber.rb +1 -5
  51. data/lib/sentry/rails/railtie.rb +8 -1
  52. data/lib/sentry/rails/serializer.rb +35 -0
  53. data/lib/sentry/rails/tracing/active_storage_subscriber.rb +4 -1
  54. data/lib/sentry/rails/version.rb +1 -1
  55. data/sentry-rails.gemspec +2 -2
  56. metadata +45 -9
  57. data/lib/sentry/rails/log_subscribers/parameter_filter.rb +0 -52
data/bin/test_old ADDED
@@ -0,0 +1,389 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # frozen_string_literal: true
4
+
5
+ # Standalone CLI script to test sentry-rails against multiple Rails versions
6
+ #
7
+ # FEATURES:
8
+ # - Dedicated lock files for each Ruby/Rails version combination
9
+ # - Prevents dependency conflicts between different Rails versions
10
+ # - Automatic lock file management and restoration
11
+ # - Clean up functionality for old lock files
12
+ #
13
+ # LOCK FILE STRATEGY:
14
+ # Each Ruby/Rails combination gets its own lock file:
15
+ # - Ruby 3.4.5 + Rails 6.1 → Gemfile-ruby-3.4.5-rails-6.1.lock
16
+ # - Ruby 3.4.5 + Rails 7.0 → Gemfile-ruby-3.4.5-rails-7.0.lock
17
+ #
18
+ # Usage:
19
+ # ./bin/test --version 5.0
20
+ # ./bin/test --all
21
+ # ./bin/test --help
22
+
23
+ require 'optparse'
24
+ require 'fileutils'
25
+
26
+ class RailsVersionTester
27
+ SUPPORTED_VERSIONS = %w[5.2 6.0 6.1 7.0 7.1 7.2 8.0 8.1].freeze
28
+
29
+ def initialize
30
+ @options = {}
31
+ @failed_versions = []
32
+ @ruby_version = RUBY_VERSION
33
+ @spec_paths = []
34
+ end
35
+
36
+ def run(args)
37
+ parse_options(args)
38
+
39
+ case
40
+ when @options[:help]
41
+ show_help
42
+ when @options[:list]
43
+ list_versions
44
+ when @options[:clean]
45
+ clean_lock_files
46
+ when @options[:all]
47
+ test_all_versions
48
+ when @options[:version]
49
+ test_single_version(@options[:version])
50
+ else
51
+ puts "Error: No action specified. Use --help for usage information."
52
+ exit(1)
53
+ end
54
+ end
55
+
56
+ private
57
+
58
+ def parse_options(args)
59
+ OptionParser.new do |opts|
60
+ opts.banner = "Usage: #{$0} [options] [spec_paths...]"
61
+
62
+ opts.on("-v", "--version VERSION", "Test specific Rails version") do |version|
63
+ unless SUPPORTED_VERSIONS.include?(version)
64
+ puts "Error: Unsupported Rails version '#{version}'"
65
+ puts "Supported versions: #{SUPPORTED_VERSIONS.join(', ')}"
66
+ exit(1)
67
+ end
68
+ @options[:version] = version
69
+ end
70
+
71
+ opts.on("-a", "--all", "Test all supported Rails versions") do
72
+ @options[:all] = true
73
+ end
74
+
75
+ opts.on("-l", "--list", "List supported Rails versions and lock file status") do
76
+ @options[:list] = true
77
+ end
78
+
79
+ opts.on("-c", "--clean", "Clean up old lock files for current Ruby version") do
80
+ @options[:clean] = true
81
+ end
82
+
83
+ opts.on("-h", "--help", "Show this help message") do
84
+ @options[:help] = true
85
+ end
86
+ end.parse!(args)
87
+
88
+ # Remaining arguments are spec paths
89
+ @spec_paths = args
90
+ end
91
+
92
+ def show_help
93
+ puts <<~HELP
94
+ Rails Version Tester for sentry-rails
95
+
96
+ This script tests sentry-rails against different Rails versions by:
97
+ 1. Setting the RAILS_VERSION environment variable
98
+ 2. Managing bundle dependencies with dedicated lock files per Ruby/Rails combination
99
+ 3. Running the test suite in isolated processes
100
+ 4. Providing proper exit codes for CI/CD integration
101
+
102
+ Each Ruby/Rails version combination gets its own Gemfile.lock to prevent conflicts:
103
+ - Ruby #{@ruby_version} + Rails 6.1 → Gemfile-ruby-#{@ruby_version}-rails-6.1.lock
104
+ - Ruby #{@ruby_version} + Rails 7.0 → Gemfile-ruby-#{@ruby_version}-rails-7.0.lock
105
+
106
+ Usage:
107
+ #{$0} --version 6.1 # Test specific Rails version (all specs)
108
+ #{$0} --version 7.0 spec/sentry/rails/log_subscribers # Test specific Rails version with specific specs
109
+ #{$0} --all # Test all supported versions
110
+ #{$0} --list # List supported versions and lock file status
111
+ #{$0} --clean # Clean up old lock files for current Ruby version
112
+ #{$0} --help # Show this help
113
+
114
+ Supported Rails versions: #{SUPPORTED_VERSIONS.join(', ')}
115
+
116
+ Examples:
117
+ #{$0} -v 7.1 # Test Rails 7.1 (all specs)
118
+ #{$0} -v 7.0 spec/sentry/rails/log_subscribers # Test Rails 7.0 log subscriber specs only
119
+ #{$0} -v 7.0 spec/sentry/rails/tracing # Test Rails 7.0 tracing specs only
120
+ #{$0} -a # Test all versions
121
+ #{$0} -c # Clean up old lock files
122
+ HELP
123
+ end
124
+
125
+ def list_versions
126
+ puts "Supported Rails versions:"
127
+ SUPPORTED_VERSIONS.each do |version|
128
+ lock_file = generate_lock_file_name(version)
129
+ status = File.exist?(lock_file) ? "(has lock file)" : "(no lock file)"
130
+ puts " - #{version} #{status}"
131
+ end
132
+ puts
133
+ puts "Current Ruby version: #{@ruby_version}"
134
+ puts "Lock files are stored as: Gemfile-ruby-X.X.X-rails-Y.Y.lock"
135
+ end
136
+
137
+ def test_all_versions
138
+ puts "Testing sentry-rails against all supported Rails versions: #{SUPPORTED_VERSIONS.join(', ')}"
139
+ puts
140
+
141
+ SUPPORTED_VERSIONS.each do |version|
142
+ puts "=" * 60
143
+ puts "Testing Rails #{version}"
144
+ puts "=" * 60
145
+
146
+ exit_code = test_rails_version(version)
147
+
148
+ if exit_code == 0
149
+ puts "✓ Rails #{version} - PASSED"
150
+ else
151
+ puts "✗ Rails #{version} - FAILED (exit code: #{exit_code})"
152
+ @failed_versions << version
153
+ end
154
+ puts
155
+ end
156
+
157
+ print_summary
158
+ end
159
+
160
+ def test_single_version(version)
161
+ puts "Testing sentry-rails against Rails #{version}..."
162
+ exit_code = test_rails_version(version)
163
+ exit(exit_code) unless exit_code == 0
164
+ end
165
+
166
+ def test_rails_version(version)
167
+ puts "Setting up environment for Rails #{version}..."
168
+
169
+ # Generate dedicated lock file name for this Ruby/Rails combination
170
+ dedicated_lock_file = generate_lock_file_name(version)
171
+ current_lock_file = "Gemfile.lock"
172
+
173
+ # Set up environment variables
174
+ env = {
175
+ "RAILS_VERSION" => version,
176
+ "BUNDLE_GEMFILE" => File.expand_path("Gemfile", Dir.pwd)
177
+ }
178
+
179
+ puts "Using dedicated lock file: #{dedicated_lock_file}"
180
+
181
+ # Manage lock file switching
182
+ setup_lock_file(dedicated_lock_file, current_lock_file)
183
+
184
+ begin
185
+ # Check if bundle update is needed
186
+ if bundle_update_needed?(env, dedicated_lock_file)
187
+ puts "Dependencies need to be updated for Rails #{version}..."
188
+ unless update_bundle(env, dedicated_lock_file)
189
+ puts "✗ Failed to update bundle for Rails #{version}"
190
+ return 1
191
+ end
192
+ end
193
+
194
+ # Run the tests in a separate process
195
+ puts "Running test suite..."
196
+ run_tests(env, @spec_paths)
197
+ ensure
198
+ # Save the current lock file back to the dedicated location
199
+ save_lock_file(dedicated_lock_file, current_lock_file)
200
+ end
201
+ end
202
+
203
+ def generate_lock_file_name(rails_version)
204
+ # Create a unique lock file name for this Ruby/Rails combination
205
+ ruby_version_clean = @ruby_version.gsub(/[^\d\.]/, '')
206
+ rails_version_clean = rails_version.gsub(/[^\d\.]/, '')
207
+ "Gemfile-ruby-#{ruby_version_clean}-rails-#{rails_version_clean}.lock"
208
+ end
209
+
210
+ def setup_lock_file(dedicated_lock_file, current_lock_file)
211
+ # If we have a dedicated lock file, copy it to the current location
212
+ if File.exist?(dedicated_lock_file)
213
+ puts "Restoring lock file from #{dedicated_lock_file}"
214
+ FileUtils.cp(dedicated_lock_file, current_lock_file)
215
+ elsif File.exist?(current_lock_file)
216
+ # If no dedicated lock file exists but current one does, remove it
217
+ # so we get a fresh resolution
218
+ puts "Removing existing lock file for fresh dependency resolution"
219
+ File.delete(current_lock_file)
220
+ end
221
+ end
222
+
223
+ def save_lock_file(dedicated_lock_file, current_lock_file)
224
+ # Save the current lock file to the dedicated location
225
+ if File.exist?(current_lock_file)
226
+ puts "Saving lock file to #{dedicated_lock_file}"
227
+ FileUtils.cp(current_lock_file, dedicated_lock_file)
228
+ end
229
+ end
230
+
231
+ def bundle_update_needed?(env, dedicated_lock_file)
232
+ # Check if current Gemfile.lock exists
233
+ current_lock_file = "Gemfile.lock"
234
+ gemfile_path = env["BUNDLE_GEMFILE"] || "Gemfile"
235
+
236
+ return true unless File.exist?(current_lock_file)
237
+
238
+ # Check if Gemfile is newer than the current lock file
239
+ return true if File.mtime(gemfile_path) > File.mtime(current_lock_file)
240
+
241
+ # For Rails version changes, check if lockfile has incompatible Rails version
242
+ if env["RAILS_VERSION"] && lockfile_has_incompatible_rails_version?(current_lock_file, env["RAILS_VERSION"])
243
+ return true
244
+ end
245
+
246
+ # Check if bundle check passes
247
+ system(env, "bundle check > /dev/null 2>&1") == false
248
+ end
249
+
250
+ def lockfile_has_incompatible_rails_version?(lockfile_path, target_rails_version)
251
+ return false unless File.exist?(lockfile_path)
252
+
253
+ lockfile_content = File.read(lockfile_path)
254
+
255
+ # Extract Rails version from lockfile
256
+ if lockfile_content =~ /^\s*rails \(([^)]+)\)/
257
+ locked_rails_version = $1
258
+ target_major_minor = target_rails_version.split('.')[0..1].join('.')
259
+ locked_major_minor = locked_rails_version.split('.')[0..1].join('.')
260
+
261
+ # If major.minor versions don't match, we need to update
262
+ return target_major_minor != locked_major_minor
263
+ end
264
+
265
+ # If we can't determine the Rails version, assume update is needed
266
+ true
267
+ end
268
+
269
+ def update_bundle(env, dedicated_lock_file)
270
+ puts "Updating bundle for Rails #{env['RAILS_VERSION']}..."
271
+
272
+ current_lock_file = "Gemfile.lock"
273
+
274
+ # Try bundle update first
275
+ if system(env, "bundle update --quiet")
276
+ puts "Bundle updated successfully"
277
+ return true
278
+ end
279
+
280
+ puts "Bundle update failed, trying clean install..."
281
+
282
+ # Remove the current lockfile and try fresh install
283
+ File.delete(current_lock_file) if File.exist?(current_lock_file)
284
+
285
+ if system(env, "bundle install --quiet")
286
+ puts "Bundle installed successfully"
287
+ return true
288
+ end
289
+
290
+ puts "Bundle install failed"
291
+ false
292
+ end
293
+
294
+ def run_tests(env, spec_paths = [])
295
+ # Determine the command to run
296
+ if spec_paths.empty?
297
+ # Run all tests via rake
298
+ command = "bundle exec rake"
299
+ else
300
+ # Run specific specs via rspec
301
+ command = "bundle exec rspec #{spec_paths.join(' ')}"
302
+ end
303
+
304
+ puts "Executing: #{command}"
305
+
306
+ # Run the tests in a separate process with proper signal handling
307
+ pid = spawn(env, command,
308
+ out: $stdout,
309
+ err: $stderr,
310
+ pgroup: true)
311
+
312
+ begin
313
+ _, status = Process.wait2(pid)
314
+ status.exitstatus
315
+ rescue Interrupt
316
+ puts "\nInterrupted! Terminating test process..."
317
+ terminate_process_group(pid)
318
+ 130 # Standard exit code for SIGINT
319
+ end
320
+ end
321
+
322
+ def terminate_process_group(pid)
323
+ begin
324
+ Process.kill("TERM", -pid) # Kill the process group
325
+ sleep(2)
326
+ Process.kill("KILL", -pid) if process_running?(pid)
327
+ rescue Errno::ESRCH
328
+ # Process already terminated
329
+ end
330
+ end
331
+
332
+ def process_running?(pid)
333
+ Process.getpgid(pid)
334
+ true
335
+ rescue Errno::ESRCH
336
+ false
337
+ end
338
+
339
+ def clean_lock_files
340
+ puts "Cleaning up lock files for Ruby #{@ruby_version}..."
341
+
342
+ # Find all lock files matching our pattern
343
+ pattern = "Gemfile-ruby-#{@ruby_version.gsub(/[^\d\.]/, '')}-rails-*.lock"
344
+ lock_files = Dir.glob(pattern)
345
+
346
+ if lock_files.empty?
347
+ puts "No lock files found matching pattern: #{pattern}"
348
+ return
349
+ end
350
+
351
+ puts "Found #{lock_files.length} lock file(s):"
352
+ lock_files.each { |file| puts " - #{file}" }
353
+
354
+ print "Delete these files? [y/N]: "
355
+ response = $stdin.gets.chomp.downcase
356
+
357
+ if response == 'y' || response == 'yes'
358
+ lock_files.each do |file|
359
+ File.delete(file)
360
+ puts "Deleted: #{file}"
361
+ end
362
+ puts "Cleanup complete!"
363
+ else
364
+ puts "Cleanup cancelled."
365
+ end
366
+ end
367
+
368
+ def print_summary
369
+ puts "=" * 60
370
+ puts "SUMMARY"
371
+ puts "=" * 60
372
+
373
+ if @failed_versions.empty?
374
+ puts "✓ All Rails versions passed!"
375
+ exit(0)
376
+ else
377
+ puts "✗ Failed versions: #{@failed_versions.join(', ')}"
378
+ puts
379
+ puts "Some Rails versions failed. See output above for details."
380
+ exit(1)
381
+ end
382
+ end
383
+ end
384
+
385
+ # Run the script if called directly
386
+ if __FILE__ == $0
387
+ tester = RailsVersionTester.new
388
+ tester.run(ARGV)
389
+ end
@@ -0,0 +1,266 @@
1
+ GIT
2
+ remote: https://github.com/ruby/debug.git
3
+ revision: 6510cfbc7496c55ebbefa437a25c17ca58f7c5eb
4
+ specs:
5
+ debug (1.11.1)
6
+ irb (~> 1.10)
7
+ reline (>= 0.3.8)
8
+
9
+ PATH
10
+ remote: ../../sentry-ruby
11
+ specs:
12
+ sentry-ruby (6.7.0)
13
+ bigdecimal
14
+ concurrent-ruby (~> 1.0, >= 1.0.2)
15
+ logger
16
+
17
+ PATH
18
+ remote: ..
19
+ specs:
20
+ sentry-rails (6.7.0)
21
+ railties (>= 5.2.0)
22
+ sentry-ruby (~> 6.7.0)
23
+
24
+ GEM
25
+ remote: https://rubygems.org/
26
+ specs:
27
+ actioncable (5.2.8.1)
28
+ actionpack (= 5.2.8.1)
29
+ nio4r (~> 2.0)
30
+ websocket-driver (>= 0.6.1)
31
+ actionmailer (5.2.8.1)
32
+ actionpack (= 5.2.8.1)
33
+ actionview (= 5.2.8.1)
34
+ activejob (= 5.2.8.1)
35
+ mail (~> 2.5, >= 2.5.4)
36
+ rails-dom-testing (~> 2.0)
37
+ actionpack (5.2.8.1)
38
+ actionview (= 5.2.8.1)
39
+ activesupport (= 5.2.8.1)
40
+ rack (~> 2.0, >= 2.0.8)
41
+ rack-test (>= 0.6.3)
42
+ rails-dom-testing (~> 2.0)
43
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
44
+ actionview (5.2.8.1)
45
+ activesupport (= 5.2.8.1)
46
+ builder (~> 3.1)
47
+ erubi (~> 1.4)
48
+ rails-dom-testing (~> 2.0)
49
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
50
+ activejob (5.2.8.1)
51
+ activesupport (= 5.2.8.1)
52
+ globalid (>= 0.3.6)
53
+ activemodel (5.2.8.1)
54
+ activesupport (= 5.2.8.1)
55
+ activerecord (5.2.8.1)
56
+ activemodel (= 5.2.8.1)
57
+ activesupport (= 5.2.8.1)
58
+ arel (>= 9.0)
59
+ activestorage (5.2.8.1)
60
+ actionpack (= 5.2.8.1)
61
+ activerecord (= 5.2.8.1)
62
+ marcel (~> 1.0.0)
63
+ activesupport (5.2.8.1)
64
+ concurrent-ruby (~> 1.0, >= 1.0.2)
65
+ i18n (>= 0.7, < 2)
66
+ minitest (~> 5.1)
67
+ tzinfo (~> 1.1)
68
+ arel (9.0.0)
69
+ base64 (0.3.0)
70
+ benchmark (0.5.0)
71
+ benchmark-ips (2.5.0)
72
+ benchmark-ipsa (0.2.0)
73
+ benchmark-ips (~> 2.5.0)
74
+ memory_profiler (~> 0.9.6)
75
+ benchmark-memory (0.1.2)
76
+ memory_profiler (~> 0.9)
77
+ benchmark_driver (0.16.5)
78
+ bigdecimal (4.1.2)
79
+ builder (3.3.0)
80
+ cgi (0.5.2)
81
+ concurrent-ruby (1.3.8)
82
+ crass (1.0.7)
83
+ date (3.5.1)
84
+ delayed_job (4.2.0)
85
+ activesupport (>= 3.0, < 9.0)
86
+ benchmark
87
+ logger
88
+ delayed_job_active_record (4.1.11)
89
+ activerecord (>= 3.0, < 9.0)
90
+ delayed_job (>= 3.0, < 5)
91
+ diff-lcs (1.6.2)
92
+ docile (1.4.1)
93
+ erubi (1.13.1)
94
+ globalid (1.1.0)
95
+ activesupport (>= 5.0)
96
+ i18n (1.14.8)
97
+ concurrent-ruby (~> 1.0)
98
+ io-console (0.9.2)
99
+ irb (1.18.0)
100
+ pp (>= 0.6.0)
101
+ prism (>= 1.3.0)
102
+ rdoc (>= 4.0.0)
103
+ reline (>= 0.4.2)
104
+ logger (1.7.0)
105
+ loofah (2.25.2)
106
+ crass (~> 1.0.2)
107
+ nokogiri (>= 1.12.0)
108
+ mail (2.9.1)
109
+ logger
110
+ mini_mime (>= 0.1.1)
111
+ net-imap
112
+ net-pop
113
+ net-smtp
114
+ marcel (1.0.4)
115
+ memory_profiler (0.9.14)
116
+ method_source (1.1.0)
117
+ mini_magick (5.3.3)
118
+ logger
119
+ mini_mime (1.1.5)
120
+ mini_portile2 (2.8.9)
121
+ minitest (5.26.1)
122
+ net-imap (0.4.25)
123
+ date
124
+ net-protocol
125
+ net-pop (0.1.2)
126
+ net-protocol
127
+ net-protocol (0.2.2)
128
+ timeout
129
+ net-smtp (0.5.1)
130
+ net-protocol
131
+ nio4r (2.7.5)
132
+ nokogiri (1.15.7)
133
+ mini_portile2 (~> 2.8.2)
134
+ racc (~> 1.4)
135
+ nokogiri (1.15.7-aarch64-linux)
136
+ racc (~> 1.4)
137
+ nokogiri (1.15.7-x86_64-linux)
138
+ racc (~> 1.4)
139
+ pp (0.6.4)
140
+ prettyprint
141
+ prettyprint (0.2.0)
142
+ prism (1.9.0)
143
+ psych (3.0.3)
144
+ racc (1.8.1)
145
+ rack (2.2.24)
146
+ rack-test (2.2.0)
147
+ rack (>= 1.3)
148
+ rails (5.2.8.1)
149
+ actioncable (= 5.2.8.1)
150
+ actionmailer (= 5.2.8.1)
151
+ actionpack (= 5.2.8.1)
152
+ actionview (= 5.2.8.1)
153
+ activejob (= 5.2.8.1)
154
+ activemodel (= 5.2.8.1)
155
+ activerecord (= 5.2.8.1)
156
+ activestorage (= 5.2.8.1)
157
+ activesupport (= 5.2.8.1)
158
+ bundler (>= 1.3.0)
159
+ railties (= 5.2.8.1)
160
+ sprockets-rails (>= 2.0.0)
161
+ rails-dom-testing (2.3.0)
162
+ activesupport (>= 5.0.0)
163
+ minitest
164
+ nokogiri (>= 1.6)
165
+ rails-html-sanitizer (1.7.1)
166
+ loofah (~> 2.25, >= 2.25.2)
167
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
168
+ railties (5.2.8.1)
169
+ actionpack (= 5.2.8.1)
170
+ activesupport (= 5.2.8.1)
171
+ method_source
172
+ rake (>= 0.8.7)
173
+ thor (>= 0.19.0, < 2.0)
174
+ rake (12.3.3)
175
+ rdoc (6.3.4.1)
176
+ reline (0.7.0)
177
+ io-console (~> 0.5)
178
+ rexml (3.4.1)
179
+ rspec (3.13.2)
180
+ rspec-core (~> 3.13.0)
181
+ rspec-expectations (~> 3.13.0)
182
+ rspec-mocks (~> 3.13.0)
183
+ rspec-core (3.13.6)
184
+ rspec-support (~> 3.13.0)
185
+ rspec-expectations (3.13.5)
186
+ diff-lcs (>= 1.2.0, < 2.0)
187
+ rspec-support (~> 3.13.0)
188
+ rspec-mocks (3.13.8)
189
+ diff-lcs (>= 1.2.0, < 2.0)
190
+ rspec-support (~> 3.13.0)
191
+ rspec-rails (4.1.2)
192
+ actionpack (>= 4.2)
193
+ activesupport (>= 4.2)
194
+ railties (>= 4.2)
195
+ rspec-core (~> 3.10)
196
+ rspec-expectations (~> 3.10)
197
+ rspec-mocks (~> 3.10)
198
+ rspec-support (~> 3.10)
199
+ rspec-retry (0.6.2)
200
+ rspec-core (> 3.3)
201
+ rspec-support (3.13.7)
202
+ sequel (5.107.0)
203
+ bigdecimal
204
+ simplecov (0.22.0)
205
+ docile (~> 1.1)
206
+ simplecov-html (~> 0.11)
207
+ simplecov_json_formatter (~> 0.1)
208
+ simplecov-cobertura (3.2.0)
209
+ rexml
210
+ simplecov (~> 0.19)
211
+ simplecov-html (0.13.2)
212
+ simplecov_json_formatter (0.1.4)
213
+ sprockets (4.4.0)
214
+ concurrent-ruby (~> 1.1)
215
+ logger
216
+ rack (>= 2.2.4, < 4)
217
+ sprockets-rails (3.4.2)
218
+ actionpack (>= 5.2)
219
+ activesupport (>= 5.2)
220
+ sprockets (>= 3.0.0)
221
+ sqlite3 (1.3.13)
222
+ thor (1.5.0)
223
+ thread_safe (0.3.6)
224
+ timeout (0.6.1)
225
+ tzinfo (1.2.11)
226
+ thread_safe (~> 0.1)
227
+ websocket-driver (0.8.2)
228
+ base64
229
+ websocket-extensions (>= 0.1.0)
230
+ websocket-extensions (0.1.5)
231
+
232
+ PLATFORMS
233
+ aarch64-linux
234
+ ruby
235
+ x86_64-linux
236
+
237
+ DEPENDENCIES
238
+ activerecord-jdbcmysql-adapter
239
+ benchmark-ips
240
+ benchmark-ipsa
241
+ benchmark-memory
242
+ benchmark_driver
243
+ cgi
244
+ debug!
245
+ delayed_job
246
+ delayed_job_active_record
247
+ irb
248
+ jdbc-sqlite3
249
+ mini_magick
250
+ psych (~> 3.0.0)
251
+ rails (~> 5.2.0)
252
+ rake (~> 12.0)
253
+ rexml (= 3.4.1)
254
+ rspec
255
+ rspec-rails (~> 4.0)
256
+ rspec-retry
257
+ sentry-rails!
258
+ sentry-ruby!
259
+ sequel
260
+ simplecov
261
+ simplecov-cobertura (~> 3.0)
262
+ sprockets-rails
263
+ sqlite3 (~> 1.3.0)
264
+
265
+ BUNDLED WITH
266
+ 2.4.22