summaryrefslogtreecommitdiff
path: root/lib/pry
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pry')
-rw-r--r--lib/pry/exceptions.rb6
-rw-r--r--lib/pry/pry_class.rb7
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/pry/exceptions.rb b/lib/pry/exceptions.rb
index eac1c009..ee31e6c4 100644
--- a/lib/pry/exceptions.rb
+++ b/lib/pry/exceptions.rb
@@ -27,7 +27,11 @@ class Pry
# Catches SecurityErrors if $SAFE is set
module TooSafeException
def self.===(exception)
- $SAFE > 0 && exception.is_a?(SecurityError)
+ if Pry::HAS_SAFE_LEVEL
+ $SAFE > 0 && exception.is_a?(SecurityError)
+ else
+ exception.is_a?(SecurityError)
+ end
end
end
diff --git a/lib/pry/pry_class.rb b/lib/pry/pry_class.rb
index 414c6a5a..80dda807 100644
--- a/lib/pry/pry_class.rb
+++ b/lib/pry/pry_class.rb
@@ -6,6 +6,13 @@ require 'pathname'
class Pry
LOCAL_RC_FILE = "./.pryrc".freeze
+ # @return [Boolean] true if this Ruby supports safe levels and tainting,
+ # to guard against using deprecated or unsupported features
+ HAS_SAFE_LEVEL = (
+ RUBY_ENGINE == 'ruby' &&
+ Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7')
+ )
+
class << self
extend Pry::Forwardable
attr_accessor :custom_completions