Module: ActiveSupport::MarshalWithAutoloading

Defined in:
activesupport/lib/active_support/core_ext/marshal.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#load(source) ⇒ Object


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'activesupport/lib/active_support/core_ext/marshal.rb', line 3

def load(source)
  super(source)
rescue ArgumentError, NameError => exc
  if exc.message.match(%r|undefined class/module (.+?)(?:::)?\z|)    # try loading the class/module

    loaded = $1.constantize

    raise unless $1 == loaded.name

    # if it is an IO we need to go back to read the object
    source.rewind if source.respond_to?(:rewind)
    retry
  else
    raise exc
  end
end