From ee5ceedeb67c1925cf44568b288204f13ef1914b Mon Sep 17 00:00:00 2001 From: Earlopain <14981592+Earlopain@users.noreply.github.com> Date: Fri, 13 Sep 2024 19:53:57 +0200 Subject: [PATCH] Drop `Proc#bind` Proc responds to `instance_exec` since forever ago Official Ruby docs only go back to 2.0, so I added that as the minimum version, if someone should for some reason still use rubies before that. https://docs.ruby-lang.org/en/2.0.0/BasicObject.html#method-i-instance_exec --- .rubocop_todo.yml | 9 --------- lib/shoulda/context.rb | 1 - lib/shoulda/context/context.rb | 21 +++------------------ lib/shoulda/context/proc_extensions.rb | 14 -------------- shoulda-context.gemspec | 2 ++ 5 files changed, 5 insertions(+), 42 deletions(-) delete mode 100644 lib/shoulda/context/proc_extensions.rb diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 717e9cb8..4abd74ca 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -196,14 +196,6 @@ Rails/RefuteMethods: Exclude: - 'test/shoulda/helpers_test.rb' -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle. -# SupportedStyles: strict, flexible -Rails/TimeZone: - Exclude: - - 'lib/shoulda/context/proc_extensions.rb' - # Offense count: 2 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. @@ -267,7 +259,6 @@ Style/MutableConstant: # Cop supports --auto-correct. Style/ParallelAssignment: Exclude: - - 'lib/shoulda/context/proc_extensions.rb' - 'test/shoulda/should_test.rb' # Offense count: 1 diff --git a/lib/shoulda/context.rb b/lib/shoulda/context.rb index d3ad1079..03fbd671 100644 --- a/lib/shoulda/context.rb +++ b/lib/shoulda/context.rb @@ -2,7 +2,6 @@ require "shoulda/context/configuration" require "shoulda/context/context" require "shoulda/context/dsl" -require "shoulda/context/proc_extensions" require "shoulda/context/test_framework_detection" require "shoulda/context/version" require "shoulda/context/world" diff --git a/lib/shoulda/context/context.rb b/lib/shoulda/context/context.rb index f5e1888e..120cd65d 100644 --- a/lib/shoulda/context/context.rb +++ b/lib/shoulda/context/context.rb @@ -36,12 +36,7 @@ def initialize(name, parent, &blk) end def merge_block(&blk) - if self.respond_to?(:instance_exec) - self.instance_exec(&blk) - else - # deprecated in Rails 4.x - blk.bind(self).call - end + self.instance_exec(&blk) end def context(name, &blk) @@ -170,23 +165,13 @@ def run_parent_setup_blocks(binding) def run_current_setup_blocks(binding) setup_blocks.each do |setup_block| - if binding.respond_to?(:instance_exec) - binding.instance_exec(&setup_block) - else - # deprecated in Rails 4.x - setup_block.bind(binding).call - end + binding.instance_exec(&setup_block) end end def run_all_teardown_blocks(binding) teardown_blocks.reverse.each do |teardown_block| - if binding.respond_to?(:instance_exec) - binding.instance_exec(&teardown_block) - else - # deprecated in Rails 4.x - teardown_block.bind(binding).call - end + binding.instance_exec(&teardown_block) end self.parent.run_all_teardown_blocks(binding) if am_subcontext? end diff --git a/lib/shoulda/context/proc_extensions.rb b/lib/shoulda/context/proc_extensions.rb deleted file mode 100644 index 0d577df9..00000000 --- a/lib/shoulda/context/proc_extensions.rb +++ /dev/null @@ -1,14 +0,0 @@ -# Stolen straight from ActiveSupport - -class Proc #:nodoc: - def bind(object) - block, time = self, Time.now - (class << object; self end).class_eval do - method_name = "__bind_#{time.to_i}_#{time.usec}" - define_method(method_name, &block) - method = instance_method(method_name) - remove_method(method_name) - method - end.bind(object) - end -end diff --git a/shoulda-context.gemspec b/shoulda-context.gemspec index b59963bf..b4274d70 100644 --- a/shoulda-context.gemspec +++ b/shoulda-context.gemspec @@ -15,6 +15,8 @@ Gem::Specification.new do |s| s.description = "Context framework extracted from Shoulda" s.license = "MIT" + s.required_ruby_version = ">= 2.0.0" + s.files = `git ls-files`.split("\n") s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") s.executables = `git ls-files -- exe/*`.split("\n").map { |f| File.basename(f) }