safer_rails_console 0.10.0 → 0.12.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e01eee1304d4e5158bd4e8b8e2be33f5959a31ae76cd644dc59c317b6c93215
4
- data.tar.gz: d2a649b163a108192a09217d4c304aec465fc889f40708fc61f40e6ecc6bbb9e
3
+ metadata.gz: d81ffdf717404cf74549377308fe6b3970da0c486536f51bb6ee9659a1c7dd20
4
+ data.tar.gz: d75d573738d307a4e8720b8dd13ca6082b2bbc3e74db77ce30e151436a437ff7
5
5
  SHA512:
6
- metadata.gz: 8ee6fd8693d76f321dea94000557460ad5397ad7043d232b3f31faaadbb5a1feb89da29c212f2d9a49dd3bf2deab13c275c607818ccf7802bb39cd8abc13ef50
7
- data.tar.gz: eeb1f37f6eee21057501de3607a6bc35bc6c9b9b19897eafcb30400caab1d827d10e2fc81eb79d6c7ace8a0dcf662116f74cd339da97a3a82779c00c95a9f33c
6
+ metadata.gz: e82f21d27f5459691cc22a1f066e2f87e3e73b0ea0a74e09a4b529b0a31f6c648da6b8f7a7ca073ad4774ead5abf66183cc0b0d579d04aa8d5e48a0a06ca414b
7
+ data.tar.gz: c9153ff2aec0148e73d6ad78882136d8d9e5302f4c959557cfa089f8fcc67bfabc6d6374413f61f068e4bb6b58f30c604ba91ca0e7378efb431c484ed0e0ccb4
data/.circleci/config.yml CHANGED
@@ -2,14 +2,14 @@ version: 2.1
2
2
  jobs:
3
3
  lint:
4
4
  docker:
5
- - image: cimg/ruby:3.1.5
5
+ - image: cimg/ruby:3.2.6
6
6
  working_directory: ~/safer_rails_console
7
7
  steps:
8
8
  - checkout
9
9
  - restore_cache:
10
10
  keys:
11
- - v2-gems-ruby-3.1.5-{{ checksum "safer_rails_console.gemspec" }}-{{ checksum "Gemfile" }}
12
- - v2-gems-ruby-3.1.5-
11
+ - v2-gems-ruby-3.2.6-{{ checksum "safer_rails_console.gemspec" }}-{{ checksum "Gemfile" }}
12
+ - v2-gems-ruby-3.2.6-
13
13
  - run:
14
14
  name: Install Gems
15
15
  command: |
@@ -18,7 +18,7 @@ jobs:
18
18
  bundle clean
19
19
  fi
20
20
  - save_cache:
21
- key: v2-gems-ruby-3.1.5-{{ checksum "safer_rails_console.gemspec" }}-{{ checksum "Gemfile" }}
21
+ key: v2-gems-ruby-3.2.6-{{ checksum "safer_rails_console.gemspec" }}-{{ checksum "Gemfile" }}
22
22
  paths:
23
23
  - "vendor/bundle"
24
24
  - "gemfiles/vendor/bundle"
@@ -82,11 +82,14 @@ workflows:
82
82
  matrix:
83
83
  parameters:
84
84
  ruby_version:
85
- - 3.1.4
86
- - 3.2.2
87
- - 3.3.0
85
+ - 3.2.6
86
+ - 3.3.6
87
+ - 3.4.7
88
88
  gemfile:
89
- - gemfiles/6.1.gemfile
90
- - gemfiles/7.0.gemfile
91
- - gemfiles/7.1.gemfile
92
89
  - gemfiles/7.2.gemfile
90
+ - gemfiles/8.0.gemfile
91
+ - gemfiles/8.1.gemfile
92
+ exclude:
93
+ # Rails 8.1 requires Ruby >= 3.3
94
+ - ruby_version: 3.2.6
95
+ gemfile: gemfiles/8.1.gemfile
data/.rubocop.yml CHANGED
@@ -2,7 +2,7 @@ inherit_gem:
2
2
  salsify_rubocop: conf/rubocop_rails.yml
3
3
 
4
4
  AllCops:
5
- TargetRubyVersion: 3.1
5
+ TargetRubyVersion: 3.2
6
6
  Exclude:
7
7
  - 'vendor/**/*'
8
8
  - 'gemfiles/**/*'
data/Appraisals CHANGED
@@ -1,17 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- appraise '6.1' do
4
- gem 'rails', '~> 6.1.7.6'
5
- end
6
-
7
- appraise '7.0' do
8
- gem 'rails', '~> 7.0.8'
3
+ appraise '7.2' do
4
+ gem 'rails', '~> 7.2.0'
9
5
  end
10
6
 
11
- appraise '7.1' do
12
- gem 'rails', '~> 7.1.2'
7
+ appraise '8.0' do
8
+ gem 'rails', '~> 8.0.0'
13
9
  end
14
10
 
15
- appraise '7.2' do
16
- gem 'rails', '~> 7.2.0'
11
+ appraise '8.1' do
12
+ gem 'rails', '~> 8.1.0'
17
13
  end
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.12.0
4
+ - Add support for Rails 8.1. **Thanks [@kwent](https://github.com/kwent)**
5
+ - Add support for Ruby 3.4.
6
+ - Drop support for Ruby 3.1.
7
+ - Drop support for Rails 6.1, 7.0, and 7.1.
8
+
9
+ ## v0.11.0
10
+ - Add support for Rails 8.0. **Thanks [@olivier-thatch](https://github.com/olivier-thatch)**
11
+
3
12
  ## v0.10.0
4
13
  - Drop support for Ruby 3.0.
5
14
  - Add support for Rails 7.2. **Thanks [@kwent](https://github.com/kwent)**
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 7.0.8"
5
+ gem "rails", "~> 8.0.0"
6
6
 
7
7
  gemspec path: "../"
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 7.1.2"
5
+ gem "rails", "~> 8.1.0"
6
6
 
7
7
  gemspec path: "../"
@@ -24,7 +24,19 @@ module SaferRailsConsole
24
24
  raise error
25
25
  end
26
26
 
27
- module PostgreSQLAdapterPatch
27
+ # Patch for the PostgreSQL database adapter for Rails 8.0 and above.
28
+ module PostgreSQLAdapteRailsPatch
29
+ def internal_execute(...)
30
+ super
31
+ rescue StandardError => e
32
+ # rubocop:disable Layout/LineLength
33
+ SaferRailsConsole::Patches::Sandbox::AutoRollback.handle_and_reraise_exception(e, 'PG::ReadOnlySqlTransaction')
34
+ # rubocop:enable Layout/LineLength
35
+ end
36
+ end
37
+
38
+ # Patch for the PostgreSQL database adapter for Rails 6.x and 7.x.
39
+ module LegacyPostgreSQLAdapteRailsPatch
28
40
  def execute_and_clear(...)
29
41
  super
30
42
  rescue StandardError => e
@@ -35,10 +47,24 @@ module SaferRailsConsole
35
47
  end
36
48
 
37
49
  if defined?(::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
38
- ::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(PostgreSQLAdapterPatch)
50
+ if SaferRailsConsole::RailsVersion.eight_or_above?
51
+ ::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(PostgreSQLAdapteRailsPatch)
52
+ elsif SaferRailsConsole::RailsVersion.six_or_above?
53
+ ::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(LegacyPostgreSQLAdapteRailsPatch)
54
+ end
55
+ end
56
+
57
+ # Patch for the MySQL database adapter for Rails 8.0 and above.
58
+ module MySQLAdapterRailsPatch
59
+ def internal_execute(...)
60
+ super
61
+ rescue StandardError => e
62
+ SaferRailsConsole::Patches::Sandbox::AutoRollback.handle_and_reraise_exception(e, 'READ ONLY transaction')
63
+ end
39
64
  end
40
65
 
41
- module MySQLPatch
66
+ # Patch for the MySQL database adapter for Rails 6.x and 7.x.
67
+ module LegacyMySQLAdapterRails67Patch
42
68
  def execute_and_free(...)
43
69
  super
44
70
  rescue StandardError => e
@@ -47,7 +73,11 @@ module SaferRailsConsole
47
73
  end
48
74
 
49
75
  if defined?(::ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter)
50
- ::ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter.prepend(MySQLPatch)
76
+ if SaferRailsConsole::RailsVersion.eight_or_above?
77
+ ::ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter.prepend(MySQLAdapterRailsPatch)
78
+ elsif SaferRailsConsole::RailsVersion.six_or_above?
79
+ ::ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter.prepend(LegacyMySQLAdapterRails67Patch)
80
+ end
51
81
  end
52
82
  end
53
83
  end
@@ -16,6 +16,12 @@ module SaferRailsConsole
16
16
 
17
17
  @six_or_above = SaferRailsConsole::RailsVersion::RAILS_VERSION >= ::Gem::Version.new('6.0.0')
18
18
  end
19
+
20
+ def eight_or_above?
21
+ return @eight_or_above if defined?(@eight_or_above)
22
+
23
+ @eight_or_above = SaferRailsConsole::RailsVersion::RAILS_VERSION >= ::Gem::Version.new('8.0.0')
24
+ end
19
25
  end
20
26
  end
21
27
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SaferRailsConsole
4
- VERSION = '0.10.0'
4
+ VERSION = '0.12.0'
5
5
  end
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
34
  spec.require_paths = ['lib']
35
35
 
36
- spec.required_ruby_version = '>= 3.1'
36
+ spec.required_ruby_version = '>= 3.2'
37
37
 
38
38
  spec.add_development_dependency 'appraisal', '~> 2.2'
39
39
  spec.add_development_dependency 'bundler', '~> 2.0'
@@ -47,5 +47,5 @@ Gem::Specification.new do |spec|
47
47
  spec.add_development_dependency 'rspec_junit_formatter'
48
48
  spec.add_development_dependency 'salsify_rubocop', '~> 1.27.0'
49
49
 
50
- spec.add_runtime_dependency 'rails', '>= 6.1', '< 7.3'
50
+ spec.add_runtime_dependency 'rails', '>= 7.2', '< 8.2'
51
51
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safer_rails_console
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Salsify, Inc
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-08-12 00:00:00.000000000 Z
11
+ date: 2025-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: appraisal
@@ -170,20 +170,20 @@ dependencies:
170
170
  requirements:
171
171
  - - ">="
172
172
  - !ruby/object:Gem::Version
173
- version: '6.1'
173
+ version: '7.2'
174
174
  - - "<"
175
175
  - !ruby/object:Gem::Version
176
- version: '7.3'
176
+ version: '8.2'
177
177
  type: :runtime
178
178
  prerelease: false
179
179
  version_requirements: !ruby/object:Gem::Requirement
180
180
  requirements:
181
181
  - - ">="
182
182
  - !ruby/object:Gem::Version
183
- version: '6.1'
183
+ version: '7.2'
184
184
  - - "<"
185
185
  - !ruby/object:Gem::Version
186
- version: '7.3'
186
+ version: '8.2'
187
187
  description: This gem makes Rails console sessions less dangerous in specified environments
188
188
  by warning, color-coding, auto-sandboxing, and allowing read-only external connections
189
189
  (disables job queueing, non-GET requests, etc.)
@@ -207,10 +207,9 @@ files:
207
207
  - Rakefile
208
208
  - bin/console
209
209
  - bin/setup
210
- - gemfiles/6.1.gemfile
211
- - gemfiles/7.0.gemfile
212
- - gemfiles/7.1.gemfile
213
210
  - gemfiles/7.2.gemfile
211
+ - gemfiles/8.0.gemfile
212
+ - gemfiles/8.1.gemfile
214
213
  - lib/safer_rails_console.rb
215
214
  - lib/safer_rails_console/colors.rb
216
215
  - lib/safer_rails_console/console.rb
@@ -240,14 +239,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
240
239
  requirements:
241
240
  - - ">="
242
241
  - !ruby/object:Gem::Version
243
- version: '3.1'
242
+ version: '3.2'
244
243
  required_rubygems_version: !ruby/object:Gem::Requirement
245
244
  requirements:
246
245
  - - ">="
247
246
  - !ruby/object:Gem::Version
248
247
  version: '0'
249
248
  requirements: []
250
- rubygems_version: 3.3.26
249
+ rubygems_version: 3.4.1
251
250
  signing_key:
252
251
  specification_version: 4
253
252
  summary: Make rails console less dangerous!
data/gemfiles/6.1.gemfile DELETED
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 6.1.7.6"
6
-
7
- gemspec path: "../"