Module: Marshal

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

Class Method Summary collapse

Class Method Details

.load_with_autoloading(source, proc = nil) ⇒ Object


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

def load_with_autoloading(source, proc = nil)
  load_without_autoloading(source, proc)
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