safer_rails_console 0.1.3 → 0.4.1

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
- SHA1:
3
- metadata.gz: e22a55eb2977ecd729a7839b196333e48099183b
4
- data.tar.gz: 7521fecaac6acc88c8707325cd65ba441f20b4e7
2
+ SHA256:
3
+ metadata.gz: aa38df80bc34ac51afa200a586bfefe0795b2dd69057b0ca1bc03c71ac15d133
4
+ data.tar.gz: 2ca8d07ece23d035ac20f7a4efa6506e44a573642336dd63b3918c12cef9ca87
5
5
  SHA512:
6
- metadata.gz: ee7b35dda3fa5ca743625ffba0649e99996fef4f1b30d57c81071830799ee1ee3572a387e598b70d3c8cc2c3e908bfdd147ed7d6e4da7b01d170cf9c71cb034c
7
- data.tar.gz: a3e5e78324986964cb026a7b3e25406bad453431befd662692f1f17af923c085c30d07d3039324adfaf79619089b3c65edf4991394aae2549be34ba30714e628
6
+ metadata.gz: b2384f5f7e310411ed41d8d9448201fb4d6d408e5c558089848d38e7532d540e6aa3bd81c31f4c6df78cb4e651cba2b1a07bce91a6e26d6b9da60e0133fee76c
7
+ data.tar.gz: '019e4acd21560cf9f6f4f0c88f919aa2319655c3ce96463717e4352ab8d0e52434984e2f57e630b384c11136e0aecf86374417191b1799aee91e2ab8f25827cb'
data/.gitignore CHANGED
@@ -13,3 +13,4 @@
13
13
 
14
14
  # Appraisal gemfile.lock
15
15
  /gemfiles/*.gemfile.lock
16
+ out
@@ -1,28 +1,31 @@
1
1
  language: ruby
2
2
  sudo: false
3
3
 
4
+ services:
5
+ - postgresql
6
+
4
7
  bundler_args: --without test --jobs 3 --retry 3
5
8
  before_install:
6
9
  - gem install bundler
7
10
 
11
+ before_script:
12
+ - cp spec/internal/database.yml.travis spec/internal/rails_5_0/config/database.yml
13
+ - cp spec/internal/database.yml.travis spec/internal/rails_5_1/config/database.yml
14
+ - cp spec/internal/database.yml.travis spec/internal/rails_5_2/config/database.yml
15
+ - cp spec/internal/database.yml.travis spec/internal/rails_6_0/config/database.yml
16
+
8
17
  script:
9
18
  - bundle exec rubocop
10
19
  - bundle exec rspec
11
20
 
12
21
  rvm:
13
- - 2.2.7
14
- - 2.3.4
15
- - 2.4.1
22
+ - 2.5.6
16
23
 
17
24
  gemfile:
18
- - gemfiles/4.1.gemfile
19
- - gemfiles/4.2.gemfile
20
25
  - gemfiles/5.0.gemfile
21
26
  - gemfiles/5.1.gemfile
27
+ - gemfiles/5.2.gemfile
28
+ - gemfiles/6.0.gemfile
22
29
 
23
30
  matrix:
24
- allow_failures:
25
- - gemfile: gemfiles/4.1.gemfile
26
- rvm: 2.4.1
27
-
28
31
  fast_finish: true
data/Appraisals CHANGED
@@ -1,11 +1,3 @@
1
- appraise '4.1' do
2
- gem 'rails', '~> 4.1.0'
3
- end
4
-
5
- appraise '4.2' do
6
- gem 'rails', '~> 4.2.0'
7
- end
8
-
9
1
  appraise '5.0' do
10
2
  gem 'rails', '~> 5.0.0'
11
3
  end
@@ -13,3 +5,11 @@ end
13
5
  appraise '5.1' do
14
6
  gem 'rails', '~> 5.1.0'
15
7
  end
8
+
9
+ appraise '5.2' do
10
+ gem 'rails', '~> 5.2.0'
11
+ end
12
+
13
+ appraise '6.0' do
14
+ gem 'rails', '~> 6.0.0'
15
+ end
@@ -1,5 +1,51 @@
1
1
  # Change Log
2
2
 
3
+ ## [v0.4.0](https://github.com/salsify/safer_rails_console/tree/v0.4.0) (2019-09-19)
4
+ [Full Changelog](https://github.com/salsify/safer_rails_console/compare/v0.3.0...v0.4.0)
5
+
6
+ **Closed issues:**
7
+
8
+ - safer\_rails\_console breaks newrelic reporting [\#23](https://github.com/salsify/safer_rails_console/issues/23)
9
+
10
+ **Merged pull requests:**
11
+
12
+ - Use Postgres for local development too [\#28](https://github.com/salsify/safer_rails_console/pull/28) ([jturkel](https://github.com/jturkel))
13
+ - Rails 6.0 support [\#26](https://github.com/salsify/safer_rails_console/pull/27) ([jturkel](https://github.com/jturkel))
14
+ - Drop Rails 4.2 support [\#26](https://github.com/salsify/safer_rails_console/pull/26) ([jturkel](https://github.com/jturkel))
15
+
16
+ ## [v0.3.0](https://github.com/salsify/safer_rails_console/tree/v0.3.0) (2018-04-16)
17
+ [Full Changelog](https://github.com/salsify/safer_rails_console/compare/v0.2.0...v0.3.0)
18
+
19
+ **Merged pull requests:**
20
+
21
+ - Add support for Rails 5.2; remove support for Rails 4.1 [\#24](https://github.com/salsify/safer_rails_console/pull/24) ([timothysu](https://github.com/timothysu))
22
+
23
+ ## [v0.2.0](https://github.com/salsify/safer_rails_console/tree/v0.2.0) (2017-09-07)
24
+ [Full Changelog](https://github.com/salsify/safer_rails_console/compare/v0.1.4...v0.2.0)
25
+
26
+ **Implemented enhancements:**
27
+
28
+ - Sandbox mode should make it clear that edits don't stick [\#19](https://github.com/salsify/safer_rails_console/issues/19)
29
+ - Writes made in sandbox mode take out DB locks [\#18](https://github.com/salsify/safer_rails_console/issues/18)
30
+ - Confusion over unsandboxed/sandboxed terminology in command prompt [\#17](https://github.com/salsify/safer_rails_console/issues/17)
31
+
32
+ **Merged pull requests:**
33
+
34
+ - Set DB transactions to read-only and provide messaging for non-read operations [\#21](https://github.com/salsify/safer_rails_console/pull/21) ([timothysu](https://github.com/timothysu))
35
+ - Change 'sandboxed' and 'unsandboxed' to 'read-only' and 'writable' and add respective flags [\#20](https://github.com/salsify/safer_rails_console/pull/20) ([timothysu](https://github.com/timothysu))
36
+
37
+ ## [v0.1.4](https://github.com/salsify/safer_rails_console/tree/v0.1.4) (2017-08-15)
38
+ [Full Changelog](https://github.com/salsify/safer_rails_console/compare/v0.1.3...v0.1.4)
39
+
40
+ **Fixed bugs:**
41
+
42
+ - Invalid cached and prepared statements do not trigger a automatic rollback with PostgreSQL [\#16](https://github.com/salsify/safer_rails_console/issues/16)
43
+ - safer\_rails\_console doesn't work in alerts service rails console mode in sandbox mode [\#13](https://github.com/salsify/safer_rails_console/issues/13)
44
+
45
+ **Merged pull requests:**
46
+
47
+ - Patch PostgreSQLAdapter\#execute\_and\_clear instead of AbstractAdapter\#log for auto-rollback [\#15](https://github.com/salsify/safer_rails_console/pull/15) ([timothysu](https://github.com/timothysu))
48
+
3
49
  ## [v0.1.3](https://github.com/salsify/safer_rails_console/tree/v0.1.3) (2017-08-02)
4
50
  [Full Changelog](https://github.com/salsify/safer_rails_console/compare/v0.1.2...v0.1.3)
5
51
 
@@ -37,4 +83,4 @@
37
83
 
38
84
 
39
85
 
40
- \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
86
+ \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
data/README.md CHANGED
@@ -27,11 +27,14 @@ require 'safer_rails_console/patches/boot'
27
27
 
28
28
  The quickest way to demo this gem is to run `bundle exec rails console --sandbox`.
29
29
 
30
- A way to explicitly enable or disable the sandbox is added to Rails console as a flag with the last install step.
30
+ Several ways to explicitly enable or disable the sandbox are added to Rails console as flags with the last install step. The order of precedence is `-s`, `-r`, then `-w` if multiple sandbox related flags are specified.
31
31
  ```ruby
32
32
  bundle exec rails console --help
33
33
 
34
+ Usage: rails console [environment] [options]
34
35
  -s, --[no-]sandbox Explicitly enable/disable sandbox mode.
36
+ -w, --writable Alias for --no-sandbox.
37
+ -r, --read-only Alias for --sandbox.
35
38
  -e, --environment=name Specifies the environment to run this console under (test/development/production).
36
39
  Default: development
37
40
  --debugger Enable the debugger.
@@ -70,6 +73,24 @@ config.safer_rails_console.warn_text = "WARNING: YOU ARE USING RAILS CONSOLE IN
70
73
  'Make sure you know what you\'re doing.'
71
74
  ```
72
75
 
76
+ configuration settings can also be overridden using ENV variables. The following ENV vars can be used:
77
+ ```
78
+ # Set the color prompt to a new color. See colors.rb for a listing of supported colors.
79
+ SAFER_RAILS_CONSOLE_PROMPT_COLOR=red/yellow/green
80
+
81
+ # Set the short name for the rails console prompt
82
+ SAFER_RAILS_CONSOLE_ENVIRONMENT_NAME=short-name
83
+
84
+ # Set the warning text to be displayed when warning for the environments rails consoled is enabled
85
+ SAFER_RAILS_CONSOLE_WARN_TEXT=New warning prompt text
86
+
87
+ # Enable or disable sandboxing of the rails console
88
+ SAFER_RAILS_CONSOLE_SANDBOX_ENVIRONMENT=true/false
89
+
90
+ # Enable or disable warning prompt of the rails console
91
+ SAFER_RAILS_CONSOLE_WARN_ENVIRONMENT=true/false
92
+ ```
93
+
73
94
  ## Development
74
95
 
75
96
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `wwtd` to simulate the entire build matrix (ruby version / rails version) or `appraisal` to test against each supported rails version with your active ruby version. Run `rubocop` to check for style.
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 4.1.0"
5
+ gem "rails", "~> 5.2.0"
6
6
 
7
7
  gemspec path: "../"
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 4.2.0"
5
+ gem "rails", "~> 6.0.0"
6
6
 
7
7
  gemspec path: "../"
@@ -3,23 +3,48 @@ require 'safer_rails_console/railtie'
3
3
  require 'safer_rails_console/colors'
4
4
  require 'safer_rails_console/rails_version'
5
5
  require 'safer_rails_console/console'
6
+ require 'active_model/type'
6
7
 
7
8
  module SaferRailsConsole
8
9
  class << self
9
10
  def environment_name
10
- config.environment_names.key?(::Rails.env.downcase) ? config.environment_names[::Rails.env.downcase] : 'unknown env'
11
+ if ENV.key?('SAFER_RAILS_CONSOLE_ENVIRONMENT_NAME')
12
+ ENV['SAFER_RAILS_CONSOLE_ENVIRONMENT_NAME']
13
+ else
14
+ config.environment_names.key?(::Rails.env.downcase) ? config.environment_names[::Rails.env.downcase] : 'unknown env'
15
+ end
11
16
  end
12
17
 
13
18
  def prompt_color
14
- config.environment_prompt_colors.key?(::Rails.env.downcase) ? config.environment_prompt_colors[::Rails.env.downcase] : SaferRailsConsole::Colors::NONE
19
+ if ENV.key?('SAFER_RAILS_CONSOLE_PROMPT_COLOR')
20
+ SaferRailsConsole::Colors.const_get(ENV['SAFER_RAILS_CONSOLE_PROMPT_COLOR'].upcase)
21
+ else
22
+ config.environment_prompt_colors.key?(::Rails.env.downcase) ? config.environment_prompt_colors[::Rails.env.downcase] : SaferRailsConsole::Colors::NONE
23
+ end
15
24
  end
16
25
 
17
26
  def sandbox_environment?
18
- config.sandbox_environments.include?(::Rails.env.downcase)
27
+ if ENV.key?('SAFER_RAILS_CONSOLE_SANDBOX_ENVIRONMENT')
28
+ ActiveModel::Type::Boolean.new.cast(ENV['SAFER_RAILS_CONSOLE_SANDBOX_ENVIRONMENT'])
29
+ else
30
+ config.sandbox_environments.include?(::Rails.env.downcase)
31
+ end
19
32
  end
20
33
 
21
34
  def warn_environment?
22
- config.warn_environments.include?(::Rails.env.downcase)
35
+ if ENV.key?('SAFER_RAILS_CONSOLE_WARN_ENVIRONMENT')
36
+ ActiveModel::Type::Boolean.new.cast(ENV['SAFER_RAILS_CONSOLE_WARN_ENVIRONMENT'])
37
+ else
38
+ config.warn_environments.include?(::Rails.env.downcase)
39
+ end
40
+ end
41
+
42
+ def warn_text
43
+ if ENV.key?('SAFER_RAILS_CONSOLE_WARN_TEXT')
44
+ ENV['SAFER_RAILS_CONSOLE_WARN_TEXT']
45
+ else
46
+ config.warn_text
47
+ end
23
48
  end
24
49
 
25
50
  def config
@@ -8,7 +8,7 @@ module SaferRailsConsole
8
8
  end
9
9
 
10
10
  def print_warning
11
- puts color_text(SaferRailsConsole.config.warn_text, SaferRailsConsole.prompt_color) # rubocop:disable Rails/Output
11
+ puts color_text(SaferRailsConsole.warn_text, SaferRailsConsole.prompt_color) # rubocop:disable Rails/Output
12
12
  end
13
13
 
14
14
  def load_config
@@ -1,8 +1,12 @@
1
1
  include SaferRailsConsole::Colors
2
2
 
3
- app_name = ::Rails.application.class.parent.to_s.underscore.dasherize
3
+ app_name = if SaferRailsConsole::RailsVersion.six_or_above?
4
+ ::Rails.application.class.module_parent.to_s.underscore.dasherize
5
+ else
6
+ ::Rails.application.class.parent.to_s.underscore.dasherize
7
+ end
4
8
  env_name = SaferRailsConsole.environment_name
5
- status = ::Rails.application.sandbox ? 'sandboxed' : 'unsandboxed'
9
+ status = ::Rails.application.sandbox ? 'read-only' : 'writable'
6
10
  color = SaferRailsConsole.prompt_color
7
11
 
8
12
  prompt = "#{app_name}(#{env_name})(#{status}):%03n:%i"
@@ -4,42 +4,17 @@ module SaferRailsConsole
4
4
  module Patches
5
5
  module Boot
6
6
  module SandboxFlag
7
- module Rails
8
- module CommandsTasks4
9
- def console
10
- require_command!('console')
11
- ::Rails::Console.singleton_class.prepend(::SaferRailsConsole::Patches::Boot::SandboxFlag::Rails::Console4)
12
- super
13
- end
14
- end
15
-
16
- module Console4
17
- def parse_arguments(arguments)
18
- options = {}
19
-
20
- OptionParser.new do |opt|
21
- opt.banner = 'Usage: rails console [environment] [options]'
22
- opt.on('-s', '--[no-]sandbox', 'Explicitly enable/disable sandbox mode.') { |v| options[:sandbox] = v }
23
- opt.on('-e', '--environment=name', String,
24
- 'Specifies the environment to run this console under (test/development/production).',
25
- 'Default: development') { |v| options[:environment] = v.strip }
26
- opt.on('--debugger', 'Enable the debugger.') { |v| options[:debugger] = v }
27
- opt.parse!(arguments)
28
- end
29
-
30
- if arguments.first && arguments.first[0] != '-'
31
- env = arguments.first
32
- options[:environment] = if available_environments.include? env
33
- env
34
- else
35
- %w(production development test).detect { |e| e =~ /^#{env}/ } || env
36
- end
37
- end
38
-
39
- options
40
- end
41
- end
7
+ def self.console_options(opt, options = {})
8
+ opt.banner = 'Usage: rails console [environment] [options]'
9
+ opt.on('-s', '--[no-]sandbox', 'Explicitly enable/disable sandbox mode.') { |v| options[:sandbox] = v }
10
+ opt.on('-w', '--writable', 'Alias for --no-sandbox.') { |v| options[:writable] = v }
11
+ opt.on('-r', '--read-only', 'Alias for --sandbox.') { |v| options[:'read-only'] = v }
12
+ opt.on('-e', '--environment=name', String,
13
+ 'Specifies the environment to run this console under (test/development/production).',
14
+ 'Default: development') { |v| options[:environment] = v.strip }
15
+ end
42
16
 
17
+ module Rails
43
18
  module CommandsTasks50
44
19
  def console
45
20
  require_command!('console')
@@ -53,11 +28,7 @@ module SaferRailsConsole
53
28
  options = {}
54
29
 
55
30
  OptionParser.new do |opt|
56
- opt.banner = 'Usage: rails console [environment] [options]'
57
- opt.on('-s', '--[no-]sandbox', 'Explicitly enable/disable sandbox mode.') { |v| options[:sandbox] = v }
58
- opt.on('-e', '--environment=name', String,
59
- 'Specifies the environment to run this console under (test/development/production).',
60
- 'Default: development') { |v| options[:environment] = v.strip }
31
+ ::SaferRailsConsole::Patches::Boot::SandboxFlag.console_options(opt, options)
61
32
  opt.parse!(arguments)
62
33
  end
63
34
 
@@ -70,19 +41,18 @@ module SaferRailsConsole
70
41
  end
71
42
  end
72
43
 
73
- if SaferRailsConsole::RailsVersion.four_one? || SaferRailsConsole::RailsVersion.four_two?
74
- require 'rails/commands/commands_tasks'
75
- ::Rails::CommandsTasks.prepend(SaferRailsConsole::Patches::Boot::SandboxFlag::Rails::CommandsTasks4)
76
- elsif SaferRailsConsole::RailsVersion.five_zero?
44
+ if SaferRailsConsole::RailsVersion.five_zero?
77
45
  require 'rails/commands/commands_tasks'
78
46
  ::Rails::CommandsTasks.prepend(SaferRailsConsole::Patches::Boot::SandboxFlag::Rails::CommandsTasks50)
79
- elsif SaferRailsConsole::RailsVersion.five_one?
47
+ elsif SaferRailsConsole::RailsVersion.five_one_or_above?
80
48
  require 'rails/command'
81
49
  require 'rails/commands/console/console_command'
82
- # Rails 5.1 defaults `sandbox` to `false`, but we need it to NOT have a default value and be `nil` when it is not user-specified
50
+ # Rails 5.1 and 5.2 defaults `sandbox` to `false`, but we need it to NOT have a default value and be `nil` when it is not user-specified
83
51
  ::Rails::Command::ConsoleCommand.class_eval do
84
52
  remove_class_option :sandbox
85
53
  class_option :sandbox, aliases: '-s', type: :boolean, desc: 'Explicitly enable/disable sandbox mode.'
54
+ class_option :writable, aliases: '-w', type: :boolean, desc: 'Alias for --no-sandbox.'
55
+ class_option :'read-only', aliases: '-r', type: :boolean, desc: 'Alias for --sandbox.'
86
56
  end
87
57
  else
88
58
  unless SaferRailsConsole::RailsVersion.supported?
@@ -6,8 +6,15 @@ module SaferRailsConsole
6
6
  def start(*args)
7
7
  options = args.last
8
8
 
9
- options[:sandbox] = SaferRailsConsole.sandbox_environment? if options[:sandbox].nil?
10
- options[:sandbox] = SaferRailsConsole::Console.sandbox_user_prompt if SaferRailsConsole.sandbox_environment? && SaferRailsConsole.config.sandbox_prompt
9
+ if options[:sandbox].nil?
10
+ options[:sandbox] = if options[:'read-only']
11
+ true
12
+ elsif options[:writable]
13
+ false
14
+ else
15
+ SaferRailsConsole.sandbox_environment? && SaferRailsConsole.config.sandbox_prompt ? SaferRailsConsole::Console.sandbox_user_prompt : SaferRailsConsole.sandbox_environment?
16
+ end
17
+ end
11
18
 
12
19
  super *args
13
20
  end
@@ -18,7 +25,7 @@ module SaferRailsConsole
18
25
  end
19
26
 
20
27
  if SaferRailsConsole::RailsVersion.supported?
21
- if SaferRailsConsole::RailsVersion.five_one?
28
+ if SaferRailsConsole::RailsVersion.five_one_or_above?
22
29
  require 'rails/commands/console/console_command'
23
30
  else
24
31
  require 'rails/commands/console'
@@ -2,16 +2,31 @@ module SaferRailsConsole
2
2
  module Patches
3
3
  module Sandbox
4
4
  module AutoRollback
5
+ extend SaferRailsConsole::Colors
6
+
7
+ def self.rollback_and_begin_new_transaction
8
+ connection = ::ActiveRecord::Base.connection
9
+ connection.rollback_db_transaction
10
+ connection.begin_db_transaction
11
+ end
12
+
13
+ def self.handle_and_reraise_exception(e)
14
+ if e.message.include?('PG::ReadOnlySqlTransaction')
15
+ puts color_text('An operation could not be completed due to read-only mode.', RED) # rubocop:disable Rails/Output
16
+ else
17
+ rollback_and_begin_new_transaction
18
+ end
19
+
20
+ raise e
21
+ end
22
+
5
23
  module ActiveRecord
6
24
  module ConnectionAdapters
7
- module AbstractAdapter
8
- def log(sql, name = 'SQL', binds = [], statement_name = nil)
9
- super(sql, name, binds, statement_name) { yield }
25
+ module PostgreSQLAdapter5
26
+ def execute_and_clear(sql, name, binds, prepare: false)
27
+ super
10
28
  rescue => e
11
- connection = ::ActiveRecord::Base.connection
12
- connection.rollback_db_transaction
13
- connection.begin_db_transaction
14
- raise e
29
+ SaferRailsConsole::Patches::Sandbox::AutoRollback.handle_and_reraise_exception(e)
15
30
  end
16
31
  end
17
32
  end
@@ -21,4 +36,6 @@ module SaferRailsConsole
21
36
  end
22
37
  end
23
38
 
24
- ::ActiveRecord::ConnectionAdapters::AbstractAdapter.prepend(SaferRailsConsole::Patches::Sandbox::AutoRollback::ActiveRecord::ConnectionAdapters::AbstractAdapter)
39
+ if defined?(::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
40
+ ::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(SaferRailsConsole::Patches::Sandbox::AutoRollback::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter5)
41
+ end
@@ -0,0 +1,26 @@
1
+ module SaferRailsConsole
2
+ module Patches
3
+ module Sandbox
4
+ module TransactionReadOnly
5
+ module ActiveRecord
6
+ module ConnectionAdapters
7
+ module PostgreSQLAdapter
8
+ def begin_db_transaction
9
+ super
10
+ execute 'SET TRANSACTION READ ONLY'
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ if defined?(::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
21
+ ::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(SaferRailsConsole::Patches::Sandbox::TransactionReadOnly::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
22
+
23
+ # Ensure transaction is read-only if it was began before this patch was loaded
24
+ connection = ::ActiveRecord::Base.connection
25
+ connection.execute 'SET TRANSACTION READ ONLY' if connection.open_transactions > 0
26
+ end
@@ -6,17 +6,7 @@ module SaferRailsConsole
6
6
 
7
7
  class << self
8
8
  def supported?
9
- four_one? || four_two? || five_zero? || five_one?
10
- end
11
-
12
- def four_one?
13
- @is_four_one = Gem::Requirement.new('~> 4.1.0').satisfied_by?(SaferRailsConsole::RailsVersion::RAILS_VERSION) if @is_four_one.nil?
14
- @is_four_one
15
- end
16
-
17
- def four_two?
18
- @is_four_two = Gem::Requirement.new('~> 4.2.0').satisfied_by?(SaferRailsConsole::RailsVersion::RAILS_VERSION) if @is_four_two.nil?
19
- @is_four_two
9
+ five_zero? || five_one? || five_two? || six_zero?
20
10
  end
21
11
 
22
12
  def five_zero?
@@ -28,6 +18,26 @@ module SaferRailsConsole
28
18
  @is_five_one = Gem::Requirement.new('~> 5.1.0').satisfied_by?(SaferRailsConsole::RailsVersion::RAILS_VERSION) if @is_five_one.nil?
29
19
  @is_five_one
30
20
  end
21
+
22
+ def five_one_or_above?
23
+ @is_five_one_or_above = SaferRailsConsole::RailsVersion::RAILS_VERSION >= ::Gem::Version.new('5.1.0') if @is_five_one_or_above.nil?
24
+ @is_five_one_or_above
25
+ end
26
+
27
+ def five_two?
28
+ @is_five_two = Gem::Requirement.new('~> 5.2.0').satisfied_by?(SaferRailsConsole::RailsVersion::RAILS_VERSION) if @is_five_two.nil?
29
+ @is_five_two
30
+ end
31
+
32
+ def six_zero?
33
+ @is_six_zero = Gem::Requirement.new('~> 6.0.0').satisfied_by?(SaferRailsConsole::RailsVersion::RAILS_VERSION) if @is_six_zero.nil?
34
+ @is_six_zero
35
+ end
36
+
37
+ def six_or_above?
38
+ @is_six_or_above = SaferRailsConsole::RailsVersion::RAILS_VERSION >= ::Gem::Version.new('6.0.0') if @is_six_or_above.nil?
39
+ @is_six_or_above
40
+ end
31
41
  end
32
42
  end
33
43
  end
@@ -1,3 +1,3 @@
1
1
  module SaferRailsConsole
2
- VERSION = '0.1.3'.freeze
2
+ VERSION = '0.4.1'.freeze
3
3
  end
@@ -31,13 +31,14 @@ Gem::Specification.new do |spec|
31
31
  spec.require_paths = ['lib']
32
32
 
33
33
  spec.add_development_dependency 'appraisal', '~> 2.2'
34
- spec.add_development_dependency 'bundler', '~> 1.15'
34
+ spec.add_development_dependency 'bundler', '~> 2.0'
35
+ spec.add_development_dependency 'climate_control', '~> 0.2.0'
35
36
  spec.add_development_dependency 'mixlib-shellout', '~> 2.2'
36
37
  spec.add_development_dependency 'overcommit', '~> 0.39.0'
38
+ spec.add_development_dependency 'pg', '~> 1.1'
37
39
  spec.add_development_dependency 'rake', '~> 12.0'
38
40
  spec.add_development_dependency 'rspec', '~> 3.6'
39
41
  spec.add_development_dependency 'salsify_rubocop', '~> 0.48.0'
40
- spec.add_development_dependency 'sqlite3', '~> 1.3'
41
42
  spec.add_development_dependency 'wwtd', '~> 1.3'
42
- spec.add_runtime_dependency 'rails', '>= 4.1', '< 5.2'
43
+ spec.add_runtime_dependency 'rails', '>= 5.0', '< 6.1'
43
44
  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.1.3
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Salsify, Inc
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-02 00:00:00.000000000 Z
11
+ date: 2020-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: appraisal
@@ -30,14 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.15'
33
+ version: '2.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.15'
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: climate_control
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.2.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.2.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: mixlib-shellout
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -67,61 +81,61 @@ dependencies:
67
81
  - !ruby/object:Gem::Version
68
82
  version: 0.39.0
69
83
  - !ruby/object:Gem::Dependency
70
- name: rake
84
+ name: pg
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '12.0'
89
+ version: '1.1'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '12.0'
96
+ version: '1.1'
83
97
  - !ruby/object:Gem::Dependency
84
- name: rspec
98
+ name: rake
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '3.6'
103
+ version: '12.0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '3.6'
110
+ version: '12.0'
97
111
  - !ruby/object:Gem::Dependency
98
- name: salsify_rubocop
112
+ name: rspec
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.48.0
117
+ version: '3.6'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.48.0
124
+ version: '3.6'
111
125
  - !ruby/object:Gem::Dependency
112
- name: sqlite3
126
+ name: salsify_rubocop
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '1.3'
131
+ version: 0.48.0
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '1.3'
138
+ version: 0.48.0
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: wwtd
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -142,20 +156,20 @@ dependencies:
142
156
  requirements:
143
157
  - - ">="
144
158
  - !ruby/object:Gem::Version
145
- version: '4.1'
159
+ version: '5.0'
146
160
  - - "<"
147
161
  - !ruby/object:Gem::Version
148
- version: '5.2'
162
+ version: '6.1'
149
163
  type: :runtime
150
164
  prerelease: false
151
165
  version_requirements: !ruby/object:Gem::Requirement
152
166
  requirements:
153
167
  - - ">="
154
168
  - !ruby/object:Gem::Version
155
- version: '4.1'
169
+ version: '5.0'
156
170
  - - "<"
157
171
  - !ruby/object:Gem::Version
158
- version: '5.2'
172
+ version: '6.1'
159
173
  description: This gem makes Rails console sessions less dangerous in specified environments
160
174
  by warning, color-coding, auto-sandboxing, and allowing read-only external connections
161
175
  (disables job queueing, non-GET requests, etc.)
@@ -178,10 +192,10 @@ files:
178
192
  - Rakefile
179
193
  - bin/console
180
194
  - bin/setup
181
- - gemfiles/4.1.gemfile
182
- - gemfiles/4.2.gemfile
183
195
  - gemfiles/5.0.gemfile
184
196
  - gemfiles/5.1.gemfile
197
+ - gemfiles/5.2.gemfile
198
+ - gemfiles/6.0.gemfile
185
199
  - lib/safer_rails_console.rb
186
200
  - lib/safer_rails_console/colors.rb
187
201
  - lib/safer_rails_console/console.rb
@@ -192,6 +206,7 @@ files:
192
206
  - lib/safer_rails_console/patches/railtie/sandbox.rb
193
207
  - lib/safer_rails_console/patches/sandbox.rb
194
208
  - lib/safer_rails_console/patches/sandbox/auto_rollback.rb
209
+ - lib/safer_rails_console/patches/sandbox/transaction_read_only.rb
195
210
  - lib/safer_rails_console/rails_version.rb
196
211
  - lib/safer_rails_console/railtie.rb
197
212
  - lib/safer_rails_console/version.rb
@@ -201,7 +216,7 @@ licenses:
201
216
  - MIT
202
217
  metadata:
203
218
  allowed_push_host: https://rubygems.org
204
- post_install_message:
219
+ post_install_message:
205
220
  rdoc_options: []
206
221
  require_paths:
207
222
  - lib
@@ -216,9 +231,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
231
  - !ruby/object:Gem::Version
217
232
  version: '0'
218
233
  requirements: []
219
- rubyforge_project:
220
- rubygems_version: 2.6.12
221
- signing_key:
234
+ rubygems_version: 3.1.2
235
+ signing_key:
222
236
  specification_version: 4
223
237
  summary: Make rails console less dangerous!
224
238
  test_files: []