class RSpec::Core::MemoizedHelpers::BeforeAllMemoizedHash
@private
memoized hash when used in a ‘before(:all)` hook.
Used internally to customize the behavior of the
def self.isolate_for_before_all(example_group_instance)
def self.isolate_for_before_all(example_group_instance) example_group_instance.instance_eval do @__memoized = BeforeAllMemoizedHash.new(self) begin yield ensure @__memoized.preserve_accessed_lets @__memoized = nil end end end
def []=(key, value)
def []=(key, value) @hash[key] = value end
def fetch(key, &block)
def fetch(key, &block) description = if key == :subject "subject" else "let declaration `#{key}`" end ::RSpec.warn_deprecation <<-EOS #{description} accessed in a `before(:all)` hook at: er[1]} deprecated behavior that will not be supported in RSpec 3. d `subject` declarations are not intended to be called fore(:all)` hook, as they exist to define state that between each example, while `before(:all)` exists to tate that is shared across examples in an example group. @hash.fetch(key, &block) end
def initialize(example_group_instance)
def initialize(example_group_instance) @example_group_instance = example_group_instance @hash = {} end
def preserve_accessed_lets
def preserve_accessed_lets hash = @hash @example_group_instance.class.class_eval do hash.each do |key, value| undef_method(key) if method_defined?(key) define_method(key) { value } end end end