Module: RSpec::Support

Defined in:
lib/rspec/support.rb,
lib/rspec/support/differ.rb,
lib/rspec/support/version.rb,
lib/rspec/support/warnings.rb,
lib/rspec/support/fuzzy_matcher.rb,
lib/rspec/support/ruby_features.rb,
lib/rspec/support/encoded_string.rb,
lib/rspec/support/hunk_generator.rb,
lib/rspec/support/version_checker.rb,
lib/rspec/support/spec/in_sub_process.rb,
lib/rspec/support/spec/stderr_splitter.rb,
lib/rspec/support/spec/formatting_support.rb,
lib/rspec/support/method_signature_verifier.rb,
lib/rspec/support/spec/with_isolated_stderr.rb

Defined Under Namespace

Modules: FormattingSupport, FuzzyMatcher, InSubProcess, RubyFeatures, Spec, Version, Warnings, WithIsolatedStdErr Classes: BlockSignature, Differ, EncodedString, HunkGenerator, MethodSignature, MethodSignatureVerifier, StdErrSplitter, VersionChecker

Constant Summary collapse

KERNEL_METHOD_METHOD =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

::Kernel.instance_method(:method)
LibraryVersionTooLowError =
Class.new(StandardError)

Class Method Summary collapse

Class Method Details

.define_optimized_require_for_rspec(lib, &require_relative) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Defines a helper method that is optimized to require files from the named lib. The passed block MUST be ‘{ |f| require_relative f }` because for `require_relative` to work properly from within the named lib the line of code must be IN that lib.

‘require_relative` is preferred when available because it is always O(1), regardless of the number of dirs in $LOAD_PATH. `require`, on the other hand, does a linear O(N) search over the dirs in the $LOAD_PATH until it can resolve the file relative to one of the dirs.



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/rspec/support.rb', line 14

def self.define_optimized_require_for_rspec(lib, &require_relative)
  name = "require_rspec_#{lib}"

  if Kernel.respond_to?(:require_relative)
    (class << self; self; end).__send__(:define_method, name) do |f|
      require_relative.call("#{lib}/#{f}")
    end
  else
    (class << self; self; end).__send__(:define_method, name) do |f|
      require "rspec/#{lib}/#{f}"
    end
  end
end

.method_handle_for(object, method_name) ⇒ Object



45
46
47
# File 'lib/rspec/support.rb', line 45

def self.method_handle_for(object, method_name)
  KERNEL_METHOD_METHOD.bind(object).call(method_name)
end